和所有编程语言一样,matlab也有类似的程序控制流程,函数定义与调用等操作,相较于python和c/++,matlab更加特别,其格式与二者皆有出入,尤其需要初学者慎重记忆、区分理解。
相同的,MATLAB的程序流程也无非分为:顺序结构、选择结构、循环结构三种类型
(一).顺序结构
MATLAB程序设计同样也遵循最基础的IPO原则
输入
MATLAB的input方式不拘一格:
变量名=input("promt")
%promt意为提示词,不可或缺,至少也要添一对引号即a=input("")
例如:
name = input('请输入您的姓名:');
age = input('请输入您的年龄:');
disp(['您好,' name '!']);
disp(['您今年已经 ' num2str(age) ' 岁了。']);
但是有一种特殊的情况,如果读入的是一个式子,例如:
a=6;
b=7;
c=input("")
输入
a*b+b
得到结果
c =
49
此时c会将读入的内容和实际存储的变量进行运算,如果输入的内容中含有未定义的变量,则会报错
x+x
错误使用 input
函数或变量 'x' 无法识别。
输出
matlab的输出方式也不局限于输出方法,任意一个已经定义的变量,运行变量名时,都会输出该变量的值
例如:
a=5
a
%输出5
matlab也有其独特的函数输入方法:disp()、fprintf()
1.disp() 函数:disp() 函数用于在命令窗口中显示文本或变量的值。您可以通过 disp() 函数输出字符串和变量,并可以使用字符串连接、转换函数等来调整输出格式。
disp(x)
例如:
A = magic(3);
disp(A)
% 8 1 6
% 3 5 7
% 4 9 2
2.fprintf() 函数:fprintf() 函数允许您按照格式化字符串的方式输出结果。您可以指定格式控制符号来控制输出的宽度、精度、对齐方式等。
fprintf(fileID,formatSpec,A1,...,An)
注:其中,fileID表示文件标识符,如果要将输出内容输出到命令窗口,则可以使用1作为标识符;formatSpec表示输出格式;A1,...,An表示要输出的数据或字符串。
例如:
A = magic(3);
fprintf('%d %d %d %d\n',A')
%8 1 6 3
%5 7 4 9
%2
在这个例子中A生成了一个三阶矩阵,正常情况下,应该生成一个三成三列的结果,但是由于我们指定的格式控制是'%d %d %d %d\n',也就是每行输出四个后换行,这样就改变了原本数据类型的格式来输出,但是变量本身并没有发生改变,只是输出出来的结果发生了格式变动。
而对于其中的格式化字符,除了提到的"%d"之外还有:
%d
:输出整数%f
:输出浮点数,其中%n.mf代表总输出宽度为n,保留m个字符。%e
:以科学计数法输出浮点数%s
:输出字符串%c
:输出字符%u
:输出无符号整数%o
:输出八进制数%x
或%X
:输出十六进制数(小写或大写)%g
:根据数值的大小自动选择%f
或%e
格式
例如:
fprintf('整数:%d\n', 42);
fprintf('浮点数:%f\n', 3.14159);
fprintf('科学计数法:%e\n', 1.23e-4);
fprintf('字符串:%s\n', 'Hello, World!');
fprintf('字符:%c\n', 'A');
x = 3.14159;fprintf('输出的数字为:%6.2f\n', x);
输出:
整数:42
浮点数:3.141590
科学计数法:1.230000e-04
字符串:Hello, World!
字符:A
输出的数字为: 3.14
对比以上两种方法,如果想要输出的数字为复数,建议最好采用disp函数,fprintf会麻烦一点,不能直接输出。
程序暂停(仅供了解)
在 MATLAB 中, `pause` 函数用来在程序执行过程中暂停一段时间。`pause` 函数可以接受一个参数,该参数是指定的暂停时间,单位为秒。
pause(5); % 暂停程序执行 5 秒钟
如果你希望程序在暂停期间等待用户按下任意键才继续执行,可以使用以下方式:
pause; % 等待用户按下任意键
disp('继续执行下一步');
不仅如此,`pause on` 和 `pause off` 耶用来控制程序暂停行为,它们会影响 `pause` 函数在程序执行过程中的行为。
pause on
当使用 `pause on` 命令时,表示允许后续的pause命令有效,即程序在调用 `pause` 函数时会等待用户按下任意键后才继续执行。
pause off
当使用 `pause off` 命令时,表示后续的pause命令无效,即程序在调用 `pause` 函数时不会等待,而是自动继续执行后续代码。
例如:
pause on; % 启用用户交互模式(默认设置)
disp('这是第一条信息');
pause;
disp('这是第二条信息');
pause off; % 禁用用户交互模式
disp('这是第三条信息');
pause;
disp('这是第四条信息');
在这个例子中,第一次调用 `pause` 时,如果处于 `pause on` 状态,程序会等待用户按下任意键;而第二次调用 `pause` 时,如果处于 `pause off` 状态,程序会自动继续执行后续代码。
注:在使用 `pause` 相关的函数时,要确保不会在循环中长时间暂停,以免影响程序的响应性,长时间的暂停可能会导致 MATLAB 响应异常,因此请谨慎使用。(如果想强行终止程序的运行,可以使用Ctrl+C)
(二).选择结构
在MATLAB中,实现选择结构可以分为两种语句:条件语句(if)和情况切换语句(switch)
条件语句
条件语句可分为:单分支、双分支和多分支
- 单分支
if ··· 语句 end
- 双分支
if ··· 语句 else 语句 end
- 多分支
if ··· 语句 elseif ··· 语句 elseif ··· 语句 ··· else 语句 end
注,如果if后面跟的不是标量时,需要当矩阵的所有值均为非零,判断才为真(True)
情况切换语句
MATLAB的情况切换语句和c++相类似
switch 变量
case 值1
语句1
case 值2
语句2
case 值3
语句3
···
otherwise
语句n
end
当变量的值等于case后面的值时执行该case下的语句,如果没有case符合,则执行otherwise下的语句
(三).循环结构
类似的,MATLAB的循环结构耶依赖for或while实现,但是具体的实现略有不同
for语句
for 循环体
语句
end
其中循环体的形式可以有很多种:
例如:
%1.
for k=1:20 %从1循环到20
%2.
x=[7 3 10 5]
for x %用矩阵元素进行循环
当然,for语句是可以进行嵌套的
while语句
while 循环条件
语句
end
while的循环条件可以是一个判断语句,也可以是一个数据列
x=[2 1 5 4 8 0 2 5]
while x
语句
end
在这个例子里面,while直接遍历x中存储的数据,当遍历到0时,自动跳出循环。
break &continue语句
break和continue是作为一类控制程序执行通断的语句,用来在适当条件下调整程序的运行。
break语句用来终止语句执行,当循环体内部执行break时,程序跳出循环,继续执行循环语句的下一语句。
continue语句用来跳过某些语句,当循环体内部执行continue时,程序跳过循环体中所有剩下的语句,继续执行下一循环。
(四)嵌套
选择结构和循环结构都可以相互结合嵌套使用,无论是在循环中选择还是在选择中循环都是可以实现的,如果使用到了continue或break语句,则尤其需要注意结构合理与否,否则会造成意想不到的错误。
标签:语句,输出,pause,函数,disp,程序流程,fprintf,matlab,程序设计 From: https://blog.csdn.net/zhanghongyi_cpp/article/details/136715838