3.Matlab程序流程控制

顺序结构:

% 有一线段AB,A的坐标为(1,1)
% B的坐标为(4.5,4.5)
% 求AB的长度,以及黄金分割点C的坐标。
a=input('a=');
b=input('b=');

c=a+0.618*(b-a)
length=abs(a-b)

if语句:

% 输入一个整数,若为奇数则输出其平方根,否则输出其立方根。  
x=input('请输入x的值:');
if rem(x,2)==1
    y=sqrt(x);
else
    y=x^(1/3);
end
y

% 输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应数的平方,若为其他字符则原样输出。
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)
else
    disp(c)
end

for循环:

% 利用无穷级数展开式求π的近似值。
y=0;
g=-1;
n=input('n=?'); 
for i=1:n
    g=-g;
    y=y+g/(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

% 利用定积分的近似值求π的近似值。
a=0;
b=1;
n=input('n=?');
h=(b-a)/n;
x=a:h:b;
f=sqrt(1-x.*x);
s=[];
for k=1:n
    s1=(f(k)+f(k+1))*h/2;
    s=[s,s1];
end
pai=4*sum(s)

% 利用蒙特卡洛法求π的近似值。
s=0;
n=input('n=?');
for i=1:n
    x=rand(1);
    y=rand(1);
    if x*x+y*y<=1
        s=s+1;
    end
end
pai=s/n*4

%for 循环变量=矩阵表达式
%       循环体语句
%end

while循环:

% 从键盘输入若干个数,当输入0时结束输入.求这些数的平均值和它们之和
msum=0;
n=0;
x=input('Enter a number (end in 0):');
while x~=0
    msum=msum+x;
    n=n+1;
    x=input('Enter a number (end in 0):');
end
if n>0
    msum
    mean=msum/n
end

% 求[100,200]之间第一个能被21整除的整数。
for n=100:200
    if rem(n,21)~=0
        continue
    end
    n
    break
end

% 用筛选法求某自然数范围内的全部素数。
m=input('m='); 
p=1:m;
p(1)=0;
for i=2:sqrt(m)
    for j=2*i:i:m
        p(j)=0;
    end
end
n=find(p~=0);
p(n)

switch语句:

% 输入一个英文单词,判断它是否以元音字母开头。
c=input('请输入一个单词:','s');
switch c(1) 
    case {'A','E','I','O','U','a','e','i','o','u'} 
        disp([c,'以元音字母开头']);
    otherwise 
        disp([c,'以辅音字母开头']);
end
 % 方法二 使用findstr函数
c=input('请输入一个单词:','s');
if findstr(c(1),'AEIOUaeiou')>0
    disp([c,'以元音字母开头']);
else
    disp([c,'以辅音字母开头']);
end

% PM2.5是指大气中直径小于或等于2.5微米的可入肺颗粒物,是衡量空气质量的重要指标。
% 假定空气质量等级以PM2.5数值划分为6级:
% PM2.5数值在[0,35)空气质量为优[35,75)为良,[75,115)为轻度污染
% [115,150)为中度污染,[150,250)为重度污染,大于等于250为严重污染。
% 编写程序,输入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('空气质量重度污染');  
    otherwise 
        disp('空气质量严重污染');
end

函数:

% 利用函数的递归调用,求n!。
function f=fact (n)
if n<=1
    f=1;
else
    f=fact (n-1)*n;    %递归调用求(n-1)!
end

函数2:

function [s,p] = fcircle(r)
s=pi*r*r;
p=2*pi*r;
end

%匿名函数
%函数句柄变量=@(匿名函数输入参数)匿名函数表达式
%例: f=@(x,y)x^2+y^2       即 f(3,4)=25
%函数句柄变量=@函数名
%例: h=@sin                即 h([i/2)=1

% 已知=(40)/((30)+(20))
% ①当()=+10 ln?(^2+5)时,的值是多少。
% ②当()=1×2+2×3+3×4+?+×(+1)时,的值是多少。

函数3:
function f = f2(n)
f=0;
for k=1:n
    f=f+k*(k+1);
end
end

% 匿名函数实现
% f1=@(n) n+10*log(n*n+5);

% y1=f1(40)/(f1(30)+f1(20))
% y2=f2(40)/(f2(30)+f2(20))

函数4:

% 编写递归调用函数求Fibonacci数列的第n项,然后调用该函数验证Fibonacci数列的如下性质:
%                   f1^2+f2^2+f3^2+……+fn^2=fn×fn+1
% 首先建立函数文件ffib.m。
function f=ffib(n)
if n>2
    f=ffib(n-1)+ffib(n-2);
else
    f=1;
end

函数5:

% 利用nargin和nargout建立函数文件test.m。
function fout=test(a,b,c)
if nargin==1
    fout=a;
elseif nargin==2
    fout=a+b;
elseif nargin==3
    fout=(a*b*c)/2;
end

函数6:

% 利用全局变量建立函数文件wad.m。
function f=wad(x,y)
global ALPHA BETA
f=ALPHA*x+BETA*y;

猜你喜欢

转载自blog.csdn.net/qq_36502291/article/details/81207877