matlab 基本语句 1¸循环语句for for i=s1s3s2 循环语句组 end
matlab 基本语句
1. 循环语句for
for i=s1: s3: s2
循环语句组
end
解释: 首先给i 赋值s1; 然后, 判断i 是否介于s1 与 s2 之间; 如果是, 则执
行循环语句组, i=i+s3(否则, 退出循环. ) ; 执行完毕后, 继续下一次循环。
例: 求1 到100 的和, 可以编程如下:
sum=0
for i=1: 1: 100
sum=sum+i
end
这个程序也可以用 while 语句编程。
注: for 循环可以通过break 语句结束整个for 循环.
2. 循环语句while
例: sum=0; i=1;
while(i, =, 基本程序结构来
实现, 这三种结构是: 顺序结构、 选择结构和循环结构。 其中顺序结构是最基本
的结构, 它依照语句的自然顺序逐条地执行程序的各条语句。 如果要根据输入数
据的实际情况进行逻辑判断, 对不同的结果进行不同的处理, 可以使用选择结
构。 如果需要反复执行某些程序段落, 可以使用循环结构。
1 顺序结构
顺序结构是由两个程序模块串接构成。 一个程序模块是完成一项独立功能的逻辑
单元, 它可以是一段程序、 一个函数, 或者是一条语句。
看图可知, 在顺序结构中, 这两个程序模块是顺序执行的, 即先执行, 然后执行。
实现顺序结构的方法非常简单, 只需将程序语句顺序排列即可。
2 选择结构
在MATLAB 中, 选择结构可由两种语句来实现。
(1) i f 语句
i f 语句的最简单用法为:
if
end
i f 语句的另一种用法为:
if
1
else
2
end
例 1 使用 i f 语句判断学生的成绩是否及格。
程序:
cl ear
n=input(’ n= ’)
m=60;
if n
r=’
else
r=’
end
练习
飞向蓝天的恐龙练习非连续性文本练习把字句和被字句的转换练习呼风唤雨的世纪练习呼风唤雨的世纪课后练习
一: 将例 1 写入M-文件编辑器, 然后在command wi ndow 调
用这个程
序。
当针对多个条件进行选择时, 可以采用下面的格式:
i f
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
达式1
程序模块1
el sei f 表达式2
程序模块2
…… ……
el sei f 表达式n
程序模块n
el se
程序模块n+1
end
例 2 将百分之的学生成绩转换为五分制输出。
程序:
cl ear
n=input(’ n= ’)
if n>=90
chji=’
elseif n>=80
chji=’
elseif n>=70
chji=’
elseif n>=60
chji=’
else
chji=’
end
练习二: 将例 2 写入M-文件编辑器, 然后在command wi ndow 调用
这个
程序。
(2) swi tch 语句
swi tch 语句可以替代多分支的 i f 语句, 而且swi tch 语句简洁明了, 可
读性
更好。 其格式为:
switch
case 1
1
case 2
2
otherwise
n
end
其中的 otherwi se 模块可以省略。
swi tch 语句的执行过程是: 首先计算表达式的值, 然后将其结果与每一
个
case 后面的数值依次进行比较, 如果相等, 则执行该case 的程序模块; 如果
都
不相等, 则执行otherwi se 模块中的语句。 如图 3 所示。
例 3 用 swi tch…case 开关结构将百分制的学生成绩转换为五分制的
成绩输
出。
程序:
cl ear
x=58
switch fix(x/10)
case {10,9}
y=’
case 8
y=’
case 7
y=’
case 6
y=’
otherwise
y=’
end
练习三: 将例 3 写入M-文件编辑器, 然后在command wi ndow 调用
这个
程序。
3 循环结构
循环结构的
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图如图 4 所示它可以多次重复执行某一组语句。 循环是
计算
机解决问题的主要手段。
在MATLAB 中, 循环结构可以由两种语句结构实现。
(1) for…end 循环结构。 其格式为:
for i=V end
其中 V 为一个行向量, 循环变量i 每次从V 中取一个数值, 执行一次循环体
的内容, 如此下去, 直到完成V 中的所有分量, 就自动结束循环体的执行。
例 4 计算 s=1
2
+2
2
+5
2
。
=[1 2 5 ]; s=0; a
for k=a,
s=s+k^2;
end,
s
该例题只是为了说明 for 语句的格式, 事实上, 用下面的语句求和更为简
单。
命令:
p=sum(a. ^2)
练习四: 建立MATLAB 与 word 的连接, 在新建的 m-book 中写入上面的程
序, 并用 notebook 菜单运行之。
循环结构里面还可以包含循环结构, 形成多重循环。
例 5 设计一个九九乘法表。
程序:
cl ear
for i=1: 9
for j=1: 9
a(i , j)=i*j;
end
end
a
练习五: ?直接在命令窗编写上面的程序。
?试运行下面的程序, 并加以分析:
程序: di sp(’ 九九乘法表 ’ ),for i =1: 9,
for j =1: i ,p{i }(j )=j*i ; end,di sp(p{i }),end
2 whil e…end
whi l e (表达式)
循环结构体
end
例 6 求MATLAB 的相对精度
解: 解题的思路是, 让y 值不断减小, 直到MATLAB 分不出 1+y 与 1 的差
别为止。
程序:
y=1; whi l e 1+y>1; y1=y; y=y/2; end,y1
说明:
?for 循环与 whi l e 循环的区别是, for 语句的循环次数是确定的, 而whi l e
语句的循环次数是不确定的。
?一定要注意在循环结构体内设置“修改条件表达式的语句” , 以免进入
“死循环” 。
?一旦出现死循环, 在命令窗用 ctrl +c 可使程序中止。
?注意程序的可读性。
练习六: 在M-文件编辑器内编写上面的脚本文件, 并利用菜单或快捷按钮
运行之。
三、 M-文件
M 文件是包含MATLAB 代码的文件。 M 文件按其内容和功能可分为脚本M 文
件和函数M 文件这两大类。
1、 脚本M 文件
脚本M 文件是许多 MATLAB 代码按顺序组成的命令集合, 不接受参数的输
入和输出, 与 MATLAB 工作区共享变量空间。 脚本文件一般用来实现一个相对独
立的功能, 比如对某个数据集进行某种分析、 绘图, 求解方程等等。
前面的几个例题都是脚本文件的类型。
2、 函数M 文件
MATLAB 的 M-函数是由 functi on 语句引导的, 其基本格式如下:
functi on [输出形参列表] = 函数名 (输入形参列表)
注释说明语句段, 由%引导;
函数体语句
函数文件需要在M-文件编辑器中编写。 写完以后, 按照当前的搜索路径保
存。 以后就可以随时调用这个函数了。
与脚本M 文件不同的是, 调用函数M 文件时需要输入自变量的实际值。
随便打开一个M-文件看一看:
open l sql i n
例 7. 定义一个函数 f(x)=[si n(x)]
2
, 其中 x 以“度” 为单位。 然后再调用该
函数。
解: 在M-文件编辑器内写入下面的文件:
functi on y=si nsd(x)
%自变量x 以“度” 为单位。
%
%白城师院
%数学建模协会, 2007-5-12
a=x/180*pi ;
y=si n(a). ^2;
将上面的文件保存之后即可随时调用。
命令:
t=si nsd(45)
t =
0. 5000
命令:
hel p si nsd
命令:
t=si nsd([45,60])
t =
0. 5000 0.7500
表明该函数对元素群运算有效。 上面的语句相当于
命令:
x=[45,60]; t=si nsd(x)
t =
0. 5000 0. 7500
命令:
x=[45,60; 30,90]; f=si nsd(x)
f =
0. 5000 0.7500
0. 2500 1. 0000
将源文件中最后一行的“.”去掉, 再运行以上两条命令, 我们会发现什么,
例 8. 在MATLAB 中, 一个函数可以调用其它函数, 也可以调用自身, 即递
归调用。 下面利用递归算法编写一个函数, 用来计算Fi bonacci 数列的第k 项。
Fi bonacci 数列:
1, 1, 2, 3, 5, 8, 13, 21, ……
M-函数文件:
function a=my_fibo(k)
if k==1| k==2,a=1;
else,a=my_fibo(k-1)+my_fibo(k-2);end
将这个文件写入M-文件编辑器并以名称“my_fi bo. m”保存, 以后就可以调
用这个函数。
递归算法无疑是解决某一类问题的有效方法, 但不宜滥用, 因为它的运算
速度往往很慢。
命令:
ti c, n= my_fi bo(26) ,toc
n =
121393
el apsed_ti me =
34. 4290
下面我们尝试用一般的循环语句来求解这个问题。
程序:
ti c,n=[1,1]; for k=3: 100,n(k)=n(k-1)+n(k-2); end,toc,
el apsed_ti me =
0. 0100
命令:
n(1: 26)
ans =
Col umns 1 through 8
1 1 2 3
5 8 13 21
Col umns 9 through 16
34 55 89 144 233 377 610 987
Col umns 17 through 24
1597 2584 4181 6765 10946 17711
28657 46368
Col umns 25 through 26
75025 121393
例 9. 可变输入变量个数的函数
MATLAB 提供的 conv( )函数可用来求两个多项式的乘积。 对于多个多项式的
连乘, 则不能直接使用此函数, 需要用该函数嵌套使用, 用起来很不方便。 下面
编写一个MATLAB 函数, 使它能直接处理任意多个多项式的乘积问题。
M-函数文件:
functi on a=convs(varargi n)
a=1;
for i =1: l ength(varargi n)
a=conv(a,varargi n{i });
end
形参varargi n 是一个特殊的字符串, 它把输入变量列表转换成一个元胞数
组, 每一个输入变量都是这个元胞数组的一个元素。 下面调用这个函数, 求解
d=(x
4
+2x
3
+4x
2
+5)(x+2)(x
2
+2x+3)
命令:
p=[1,2,4,0,5];q=[1,2];f=[1,2,3];
d=convs(p,q,f)
d =
1 6 19 36 45 44
35 30
命令:
convs(p,q,f,[1,1],[1,3],[1,1])
ans =
1 11 56 176 376 578
678 648 527 315 90
例 10 关于break、 conti nue、 return 的用法。
当程序运行过程中出现return 命令时, 程序停止运行。 break、 conti nue 用在
酚锞渲小?在循环语句中, 如果遇到break 命令时, 程序结束当前的“for”或
“whi l e”循环, 转而执行它下面最近的 end 以下的语句; 遇到conti nue 时, 跳
过当次循环而继续下一次的循环, 例如, 原定要循环5 次, 但在进入第3 次循
环时遇到了 conti nue, 则第3 次的循环被跳过, 而继续第4 次、 第5 次的循环。
循环体实际上只重复执行了 4 次。
程序:
cl ear
str=’MATLAB R14. 3 versi on’;
for i =1: l ength(str)
i f (~i sl etter(str(i )))
conti nue
end
resul t(i )=str(i );
end
resul t
resul t =
MATLAB R versi on
运行这个程序并观察结果。 然后再将程序中的语句conti nue 改为 break 或
return, 看运行结果有何变化。