本文主要是介绍matlab学习——程序流程控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
%% 1 顺序结构程序
%A=input('...') 输入
%disp() 输出
%pause(s) s为延迟秒数,省略则暂停按任意键继续
%输入平面内两点坐标,计算距离及黄金分割点坐标
a=input('a=');
b=input('b=');
c=a+0.618*(b-a);
s=abs(a-b);
disp(s)
disp(c)
%% 2 if语句选择结构
% 2.1单分支if语句
% if 条件
% 语句组
% end
% 条件为标量时:非零条件成立,零条件不成立
% 条件为矩阵时:矩阵非空且不包含零元素条件成立,否则不成立
% 2.2双分支if语句
% if 条件
% 语句组1
% else
% 语句组2
% end
%例:输入一个整数,若为奇数输出其平方根,否则输出其立方根
x=input('请输入x的值:');
if rem(x,2) %或rem(x,2)==1 y=sqrt(x);
elsey=x^(1/3); %或power(x,1/3)
end
y
% 2.3多分支if语句
% if 条件1
% 语句组1
% elseif 条件2
% 语句组2
% ...
% elseif 条件m
% 语句组m
% else
% 语句组n
% end
%例:输入一个字符,大写字母->小写字母,小写字母->大写字母,数字字符->平方,其他->不变
c=input('请输入一个字符:','s');
if c>='A' && c<='Z'disp(lower(c))
elseif c>='a' && c<='z'disp(upper(c))
elseif c>='0' && c<='9'disp(str2double(c)^2)
elsedisp(c)
end
%% 3 用switch语句实现选择结构
% switch 表达式
% case 结果表1
% 语句组1
% case 结果表2
% 语句组2
% ...
% case 结果表m
% 语句组m
% otherwise
% 语句组n
% end
% switch表达式的值应是可列举的(整型表达式、字符串表达式)
% case结果表为switch表达式的取值,取值有多个时,用单元数据表示({...})
x=input('x=?');
switch fix(x)case 2disp(111);case 2disp(222);case {3,4,5}disp(333);otherwisedisp(444);
end
% 例:输入一个英文单词,判断它是否以元音字母开头
clc,clear
c=input('请输入一个单词:','s');
switch c(1)case {'A','E','I','O','U','a','e','i','o','u'}disp([c,'以元音字母开头']);otherwisedisp([c,'以辅音字母开头']);
end
% 或
c=input('请输入一个单词:','s');
if findstr(c(1),'AEIOUaeiou')>0disp([c,'以元音字母开头']);
elsedisp([c,'以辅音字母开头']);
end
% 例:整数分级(输入PM2.5数值,输出空气质量等级)
g=input('请输入PM2.5值:');
switch fix(g)case num2cell(0:34)disp('空气质量优');case num2cell(35:74)disp('空气质量良好');case num2cell(75:114)disp('空气质量轻度污染');case num2cell(115:149)disp('空气质量重度污染');case num2cell(150:249)disp('空气质量重度污染');otherwisedisp('空气质量严重污染');
end
%% 4 for语句实现循环结构
% for 循环变量=表达式1(初值):表达式2(步长):表达式3(终值)/行向量/矩阵表达式
% 循环体语句
% end
% for语句针对向量的每一个元素执行一次循环体(向量为空时,循环体一次也不执行)
% 退出循环之后,循环变量的值就是向量中最后的元素值
for i=[1,3,2,5]i
end
for j=[1;3;2;5]j
end
i,j
% 例:计算圆周率π
% 利用无穷级数展开式求
y=0;g=-1;
n=input('n=?');
for i=1:ng=-g;y=y+g*1/(2*i-1);
end
pai=4*y
% 向量求和方法
n=input('n=?');
x=1:2:(2*n-1);
y=(-1).^(2:n+1)./x;
pai=sum(y)*4
% 利用定积分的近似值求pi的近似值
a=0;b=1;
n=input('n=?');
h=(b-a)/n;
x=a:h:b;
f=sqrt(1-x.*x);
s=[];
for k=1:ns1=(f(k)+f(k+1))*h/2;s=[s,s1];
end
pai=4*sum(s)
% 蒙特卡洛法求pi
s=0;
n=input('n=?');
for i=1:nx=rand(1);y=rand(1);if x*x+y*y<=1s=s+1;end
end
pai=s/n*4
%% 5 while语句实现循环结构
% while 条件
% 循环体语句
% end
% 例:从键盘输入若干数、输入0时结束,计算这些数的平均值和它们的和
msum=0;
n=0;
x=input('Enter a number (end in 0):');
while x~=0msum=msum+x;n=n+1;x=input('Enter a number (end in 0):');
end
if n>0msummean=msum/n
end
%% 流程转向语句break和continue
% break语句,跳出循环体
% continue语句,结束本次循环
% 例:求[100,200]之间第一个能被21整除的整数
for n=100:200if rem(n,21)~=0continueendnbreak
end
%% 循环的嵌套
% 例:筛选法求[2,m]内全部素数
m=input('m=');
p=1:m;
p(1)=0;
for i=2:sqrt(m)for j=2*i:i:mp(j)=0;end
end
n=find(p~=0);
p(n)
%% 6 匿名函数
% 函数句柄变量=@(匿名函数输入参数)匿名函数表达式
f=@(x,y) x^2+y^2;
f(3,4)
% 函数句柄变量=@函数名
h=@sin;
h(pi/2)
% 例:求y=f(40)/(f(30)+f(20)),f(n)=n+10ln(n^2+5)
clc,clear
f1=@(n) n+10*log(n^2+5);
y=f1(40)/(f1(30)+f1(20))
%% 7 函数的递归调用
% 例:求n!
fact(10)
function f=fact(n)if n<=1f=1;elsef=fact(n-1)*n;end
end
% 例:验证fibonacci数列性质
clc,clear
F=[];
for k=1:20F=[F,ffib(k)*ffib(k)];
end
sum(F)
ffib(20)*ffib(21)
function f=ffib(n)if n>2f=ffib(n-1)+ffib(n-2);elsef=1;end
end
```c
```c
%% 8 函数参数与变量的作用域
% nargin 调用函数时输入实参的个数
% nargout 调用函数时输出实参的个数
function fout=test1(a,b,c)if nargin==1fout=a;elseif nargin==2fout=a+b;elseif nargin==3fout=(a*b*c)/2end
end
% 局部变量:函数文件中的变量为局部变量
% 全局变量:global 全局变量名
function f=wad(x,y)
global ALPHA BETA
f=ALPHA*x+BETA*y;
end
global ALPHA BETA
ALPHA=1;
BETA=2;
s=wad(1,2)
这篇关于matlab学习——程序流程控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!