概述
目录
一、顺序结构程序
1.程序和程序设计
什么叫程序?
程序的三种基本结构
脚本文件和函数文件
2.文件的建立
3.顺序结构
数据的输入
数据的输出
程序的暂停
二、用if语句实现选择结构
1.什么是选择结构?
2.单分支if语句
3.双分支if语句
4.多分支if语句
四、用for语句实现循环结构
1.什么是循环结构?
2.for语句
3.计算圆周率pi
利用无穷级数展开式求pi的近似值
利用定积分的近似值求pi的近似值
利用蒙特卡洛法求pi的近似值
五、while语句实现循环结构
1.格式
2.break语句和continue语句
3.循环的嵌套
六、函数文件的定义与调用
1.函数文件的基本结构
2.函数调用
七、函数的递归调用
1.函数的嵌套调用
2.函数的递归调用
八、函数参数与变量的作用域
1.函数参数的可调性
2.全局变量与局部变量
一、顺序结构程序
1.程序和程序设计
什么叫程序?
程序是用某种计算机能够理解并且能够执行的语言来描述的解决问题的方法和步骤。
程序设计的基本步骤:
程序的三种基本结构
顺序结构
选择语句
循环结构
.m文件,文件名字
脚本文件和函数文件
脚本文件是可以在命令行窗口直接执行的文件,也叫命令文件。
函数文件是定义一个函数,不饿能直接执行,而必须以函数调用的方式来调用它。
2.文件的建立
方法:
edit test
例子:
分别建立脚本文件和函数文件,求两个矩阵的乘积。
3.顺序结构
数据的输入
A=input(提示信息,选项);
数据的输出
disp(输出项);
>> s='Hello ,MATLAB';
>> disp(s)
Hello ,MATLAB
>> a=[1,2,3;4,5,6];
>> disp(a)
1 2 3
4 5 6
程序的暂停
pause(延迟秒数);
若要强行中止程序的运行可使用Ctrl + C 命令。
一段程序一般包括:
输入原始数据
对原始数据进行处理
输出处理结果
例子:
有一个享端AB,A的坐标为(1,1),B的坐标为(4.5,4.5),求AB的长度,以及黄金分割点C的坐标。
黄金分割
代码实现:
a=input('a=');
b=input('b=');
c=a+0.618*(b-a);
s=abs(a-b);
disp(s)
disp(c)
>> a=input('a=');
a=1+i
>> f2
a=1+i
b=1.5+4.5i
3.5355
1.3090 + 3.1630i
二、用if语句实现选择结构
1.什么是选择结构?
2.单分支if语句
格式:
程序框图:
当条件结果为标量时,非零表示条件成立,零表示条件不成立。
当条件结果为矩阵时,如果矩阵为非空,且不包含零元素,则条件成立,否则不成立。
例如:[1,2;0,4]表示条件时,条件不成立;[1,2;3,4]表示条件时,条件成立。
3.双分支if语句
语句格式:
程序框图:
例子:输入一个整数,若为奇数,则输出其平方根,否则输出其立方根。
x=input('请输入x的值');
if rem(x,2)==1
y=sqrt(x);
else
y=x^(1/3);
end
y
//输出结果
>> f2
请输入x的值3
y =
1.7321
其中, rem(x,2)==1 也可以写成rem(x,2) 本身余数为1就表示表达式成立。
x^(1/3) 可等价写成power(x,1/3)
4.多分支if语句
语句格式:
程序框图:
在多分支if语句中,不管有几个分支,程序执行完一个分支后,其余分支将不会再执行,这时整个if语句结束。
例子:
输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应数的平方,若为其他字符则原样输出。
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
diap(c)
end
//测试:
>> f2
请输入一个字符:2
4
三、用switch语句实现选择结构
switch语句的格式
程序框图:
switch表达式应该是一个其值可以列举的表达式。
case结果表为switch表达式的取值,当取值有多个时,用单元数据表示。
x=input('x=?');
switch fix(x)
case 2
disp(111);
case 2
disp(222);
case {3,4,5}
disp(333);
otherwise
disp(444);
end
//输出:
>> f2
请输入一个字符:2
4
>> f2
x=?2
111
>> f2
x=?4
333
>> f2
x=?8
444
例子:
输入一个英文单词,判断它是否以原因字母开头。
c=input('请输入一个英文单词:','s');
switch c(1)
case {'A','E','I','O','U','a','e','i','o','u'}
disp([c,'以元音字母开头']);
otherwise
disp([c,'以辅音字母开头']);
end
//输出:
>> f2
请输入一个英文单词:Hello
Hello以辅音字母开头
>> f2
请输入一个英文单词:interesting
interesting以元音字母开头
还可以这么写代码:
c=input('请输入一个单词:','s');
if findstr(c(1),'AEIOUaeiou')>0
disp([c,'以元音字母开头']);
else
disp([c,'以辅音字母开头']);
end
例子:
可能的方案:
- 用六个单分支结构实现
- 用多分枝if语句实现
- 用switch语句实现
这里采用switch语句实现:
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
测试:
请输入PM2.5值:100
空气质量轻度污染
四、用for语句实现循环结构
1.什么是循环结构?
循环结构又称为重复结构,是利用计算机运算速度快以及能进行逻辑控制的特点来重复执行某些操作。
程序框图:
2.for语句
格式
程序框图:
说明:
for语句针对向量的每一个元素执行一次循环体。
推出循环之后,循环变量的值就是向量中最后的元素值。
当向量为空时,循环体一次也不执行。
例子:
3.计算圆周率pi
利用无穷级数展开式求pi的近似值
程序:
y=0;
g=-1;
n=input('n=?');
for i=1:n
g=-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:n
s1=(f(k)+f(k+1))*h/2;
s=[s,s1];
end
pai=4*sum(s)
利用蒙特卡洛法求pi的近似值
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
按照MATLAB的定义,for语句的循环变量也可以是一个列向量,其格式为:
for循环变量=矩阵表达式
循环体语句
end
五、while语句实现循环结构
1.格式
流程图:
例子:
从键盘输入若干个数,当输入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
while语句多用于循环次数不确定的情况,而对于循环次数确定的情况,使用for语句更方便。
针对不同情况可以选择不同的循环语句,但从功能上讲两种循环语句可以相互替代。
2.break语句和continue语句
例子:
求100到200之间第一个能被21整除的整数。
for n=100:200
if rem(n,21)~=0
continue
end
n
break
end
3.循环的嵌套
如果一个循环结构的循环体又包含一个循环结构,就称为循环的嵌套,或称为多重循环结构。
例子:
用筛选法求某自然数范围内的全部素数。
代码:
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)
六、函数文件的定义与调用
1.函数文件的基本结构
function输出形参表=函数名(输入形参表)
注释说明部分
函数体语句
当有多个形参时,形参之间用逗号分隔,组成形参表。
当输出形参多于一个时,应该用方括号括起来,构成一个输出矩阵。
函数文件名字通常由函数名家上扩展名,m组成,函数文件名与函数名也可以不相同。一般式相同的
return语句表示结束函数的执行。没有return时,函数自动返回。
2.函数调用
调用格式:
【输出实参表】 = 函数名(输入实参表)
再调用函数时,函数输入输出参数称为实际参数,简称实参。
3.匿名函数
基本格式:
>> f=@(x,y)x^2+y^2
f =
包含以下值的 function_handle:
@(x,y)x^2+y^2
>> f(3,4)
ans =
25
函数句柄变量=@函数名
>> h=@sin
h =
包含以下值的 function_handle:
@sin
>> h(pi/2)
ans =
1
例子:
七、函数的递归调用
1.函数的嵌套调用
2.函数的递归调用
一个函数调用它自身称为函数的递归调用
递归是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
直接递归调用
间接递归调用
例子:
程序:
更进一步的理解:
例子:
建立函数文件ffib.m
function f=ffib(n)
if n>2
f=ffib(n-1)+ffib(n-2);
else
f=1;
end
建立脚本文件test.m
F=[];
for k=1:20
F=[F,ffib(k)*ffib(k)];
end
sum(F)
ffib(20)*ffib(21)
运行结果:
>> test
ans =
74049690
ans =
74049690
递归可以使程序简洁,但会牺牲程序的效率,这是需要权衡的。
八、函数参数与变量的作用域
1.函数参数的可调性
nargin 输入实参的个数
nargout 输出实参的个数
例子:
编写test函数:
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
端口测试:
>> test(2)
ans =
2
>> test(2,3,2)
ans =
6
2.全局变量与局部变量
局部变量:是指在程序中只才特定过程或函数中可以访问的变量。
全局变量:作用域是整个MATLAB工作空间,也就是全程有效,所有的函数都可以对它进行存取和修改。
globle关键字定义全局变量
例子:
最后
以上就是辛勤猎豹为你收集整理的MATLAB笔记3:MATLAB程序流程控制一、顺序结构程序二、用if语句实现选择结构四、用for语句实现循环结构五、while语句实现循环结构六、函数文件的定义与调用七、函数的递归调用八、函数参数与变量的作用域的全部内容,希望文章能够帮你解决MATLAB笔记3:MATLAB程序流程控制一、顺序结构程序二、用if语句实现选择结构四、用for语句实现循环结构五、while语句实现循环结构六、函数文件的定义与调用七、函数的递归调用八、函数参数与变量的作用域所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复