MATLAB课件 第6章MATLAB程序语句Word文件下载.docx
- 文档编号:3688393
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:20
- 大小:63.36KB
MATLAB课件 第6章MATLAB程序语句Word文件下载.docx
《MATLAB课件 第6章MATLAB程序语句Word文件下载.docx》由会员分享,可在线阅读,更多相关《MATLAB课件 第6章MATLAB程序语句Word文件下载.docx(20页珍藏版)》请在冰点文库上搜索。
he=x+y;
cha=x-y;
M函数编写完成后,要用M函数名作为文件名来保存文件。
实际上,在保存M函数时,对话框出现的默认文件名就是函数名。
【例6.1】:
编写函数文件,求半径为r的圆的面积和周长.
在新建窗口下键入如下命令:
function[S,L]=yuan(r)
S=pi*r*r;
L=2*pi*r;
然后保存在搜索路径之下,函数名和文件名都将为yuan.m此时,就像调用MATLAB内带的函数一样去调用它。
例如,在命令窗口输入:
>
[s,t]=yuan(3)
s=
28.2743
t=
18.8496
此时可以得出,当圆的半径为3时,面积为28.2743,周长为18.8496
【例6.2】编写函数文件,实现直角坐标(x,y)与极坐标(rho,theta)之间的转换.
建立函数文件tran.m
function[rho,theta]=tran(x,y)
rho=sqrt(x*x+y*y)
theta=atan(y/x)
在matlab中,函数可以嵌套调用,即一个函数可以调用别的函数,甚至调用本身,一个函数调用其自身称为函数的递归调用.
【例6.3】利用函数的递归调用,求n!
functionf=digui(n)
ifn==1
f=1;
else
f=digui(n-1)*n;
end
编写完后保存在搜索路径之下,即可调用:
digui(4)
ans=
24
即:
4*3*2*1=24
在函数的调用时,matlab有两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参.
【例6.4】nargin用法示例:
functionfout=shican(a,b,c)
ifnargin==1
fout=a;
elseifnargin==2
fout=a+b;
else
fout=(a*b*c)/2;
shican(2,4)
6
shican(4)
4
shican(1,2,3)
3
【例6.5】:
自己编写输入变量函数fenzu,用于生成均等分组的数据
functiony=fenzu(a,b,n)
%如果缺少n,则令n=b-a
%函数将a,b之间的数据n等分输出
ifnargin==2
n=b-a;
y=a:
(b-a)/n:
b;
保存好程序后,调用如下:
fenzu(1,10)
12345678910
fenzu(1,10,3)
14710
6.2MATLAB语句
MATLAB语句有表达式语句、输入输出语句、控制语句、绘图语句和显示语句等等。
表达式语句已经介绍过了,下面将简单介绍其他几个语句。
6.2.1控制语句
1for-end循环语句
for-end循环语句的一般格式是:
for循环变量=循环参数表达式
运算式
end
for-end循环语句的功能是,循环允许一组命令以固定的和预定的次数重复。
循环参数表达式通常是“标量(循环开始参数):
标量(循环终止参数)”或者“标量(循环开始参数):
标量(递增或递减参数):
标量(循环终止参数)”的形式。
【例6.6】在M程序窗口编写如下程序:
fori=1:
11
y(i)=sin(i);
y
在搜索路径之下,保存为li6_6.m,在命令窗口键入li6_6,得:
y=
0.84150.90930.1411-0.7568-0.9589-0.27940.65700.98940.4121-0.5440-1.0000
具体操作过程是:
在for和end语句之间的运算式按数组中的每一列(column)执行一次。
在每一次迭代中,y被指定为数组的下一列,即在第n次循环中,y=array(:
n)。
for-end循环语句不能通过在循环语句内给循环变量重新赋值来终止循环过程,应该利用break命令跳出for-end循环。
for-end循环可按需要嵌套。
【例6.7】:
在M程序窗口编写如下程序:
sum=0;
n=input('
pleaseinputanumber'
);
fori=1:
n
sum=sum+i;
ifsum>
4949
break
sum
在搜索路径之下,保存为li6_7.m,在命令窗口键入li6_7,即可得到相应的结果。
li6_7
pleaseinputanumber99%数字99是在提示下由键盘输入的,下面98,100也一样。
sum=
4950
pleaseinputanumber98
4851
pleaseinputanumber100
以上结果说明,当求和加到99后,其和=4950,已超过4949,循环跳出。
【例6.8】已知
当n=100时,求y的值
解答:
在M程序窗口编写如下程序:
y=0;
n=100;
y=y+1/(2*i-1);
y
在搜索路径之下,保存为li6_8.m,在命令窗口键入li6_8,得:
y=3.2843
【例6.9】:
求sum=(1+2+3+…..+100)
100
在搜索路径之下,保存为li6_9.m,在命令窗口键入li6_9,得sum=5050
【例6.10】:
编程输入范德蒙型的矩阵.
clearall;
x=[1234];
4
forj=1:
A(i,j)=x(i)^(j-1);
end
A
在搜索路径之下,保存为li6_10.m,在命令窗口键入li6_10,得A=
1111
1248
13927
141664
2while-end循环语句
while-end循环语句的一般格式是:
while条件表达式
运算式
while-end循环语句的功能是,仅仅知道循环产生的条件、而循环次数为不确定的循环运算。
循环条件表达式通常的形式是:
expressionropexpression
这里rop是==,<
>
<
=,>
=或~=。
可以利用break命令跳出while-end循环,while-end循环可以按需要嵌套。
【例6.11】:
从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和.
cnt=0;
val=input(‘enteranumber(endin0):
’);
whileval~=0
sum=sum+val;
cnt=cnt+1;
ifcnt>
mean=sum/cnt
在搜索路径之下,保存为li6_11.m,在命令窗口键入li6_11,即可得到相应的结果。
3if-else-end分支语句
if-else—end分支语句的格式之一是:
if条件表达式
运算式;
该if-else--end分支语句的功能是,如果在条件表达式中的所有元素为非零,那么就执行if和end语言之间的语句。
【例6.12】:
ifrand
(1)>
0.5
disp('
iloveyou'
在搜索路径之下,保存为li6_12.m,在命令窗口键入li6_12,即可得到相应的结果。
if-else--end分支语句的格式之二(当有两种选择时)是:
if条件表达式
运算式1
else
运算式2
该if-else--end分支语句的功能是,如果条件表达式为真,则执行第一组命令;
如果条件表达式是假,则执行第二组命令。
【例6.13】:
idonotloveyou'
在搜索路径之下,保存为li6_13.m,在命令窗口键入li6_13,即可得到相应的结果。
【例6.14】:
编写绝对值函数y=|x|
解:
functiony=juedui(x)
ifx>
=0
y=x;
y=-x;
在搜索路径之下,保存为juedui.m,在命令窗口调用juedui(x),即可得到相应的结果。
juedui(-9)
9
juedui(12)
12
if-else--end分支语句的格式之三(当有多种选择时)是:
if条件表达式1
elseif条件表达式2
else条件表达式3
运算式3
end
该if-else--end分支语句的功能是,最后的这种形式,首先检测第一个条件表达式,当条件表达式1为真,则执行运算式1,否则检测条件表达式2,以次类推。
【例6.15】:
建立命令文件,用色彩与线形区分数据点的范围。
x=1:
n;
y=randn(1,n)%产生100个服从正态分布的随机行数组
ify(i)<
-1
plot(x(i),y(i),'
g*'
elseify(i)>
=-1&
y(i)<
=1
ob'
else
xr'
holdoff
在搜索路径之下,保存为li6_15.m,在命令窗口键入li6_15,即可得到相应的结果。
图6.3
【例6.16】:
建立M函数文件,画出下列分段函数所表示的曲面。
functionqumian(a,b)
clf;
clc;
x=-a:
0.2:
a;
y=-b:
length(y)
length(x)
ifx(j)+y(i)>
1
z(i,j)=0.5457*exp(-0.75*y(i)^2-3.75*x(j)^2-1.5*x(j));
elseifx(j)+y(i)<
=-1
z(i,j)=0.5457*exp(-0.75*y(i)^2-3.75*x(j)^2+1.5*x(j));
z(i,j)=0.7575*exp(-y(i)^2-6*x(j)^2);
colormap(flipud(winter));
surf(x,y,z);
在搜索路径之下,保存为qumian.m,在命令窗口调用qumian(x,y),即可得到相应的结果。
【例6.17】当有更多种选择时,可采用如下的命令格式:
ifrand
(1)<
0.2
disp('
rand
(1)<
0.2'
elseifrand
(1)<
0.4&
rand
(1)>
=0.2
0.2=<
0.4'
0.6&
=0.4
0.4=<
0.6'
0.8&
=0.6
0.6=<
0.8'
0.8=<
rand
(1)'
把以上命名保存在搜索路径之下,命名为li6_17。
然后在窗口输入:
li6_17
0.6%说明此时运行rand
(1),其值在区间[0.4,0.6]之中。
4switch-case语句
switch-case语句的格式是:
switchnum
casen1
command_1
casen2
command_2
casen3
command_3
otherwise
command_n
switch-case语句的的功能是:
一旦参数“num”为其中的某个值或字符串时(如n1或n2或n3,等等),就执行所对应的指令(如commnad_1或command_2或command_3,等等);
没有对应时,则执行otherwise后的语句(command_n)。
【例6.18】:
某商场对顾客所购买的商品实行打折销售,标准如下:
Price<
200无折扣;
200<
=price<
5004%
500<
12008%;
1200<
300012%;
3000<
800015%;
5000<
=price20%
price=input('
请输入商品价格:
'
switchfix(price/100)
case{0,1}
rate=0;
case{2,3,4}
rate=4/100;
casenum2cell(5:
11)
rate=8/100;
casenum2cell(12:
29)
rate=12/100;
casenum2cell(30:
79)
rate=15/100;
otherwise
rate=20/100;
price=price*(1-rate)
在搜索路径之下,保存为li6_18.m,在命令窗口键入li6_18,即可得到相应的结果。
li6_18
10000
price=
10000
8000
6.2.2其它语句
1输入语句
如果要输入数值,采用以下格式:
x=input('
pleaseinputanumber:
pleaseinputanumber:
22
x=22
如果要输入字符串,采用以下格式:
pleaseinputastring:
'
s'
pleaseinputastring:
thisisastring
x=thisisastring
2输出语句
自由格式(disp):
disp(23+454-29*4)
361
disp([112233;
445566;
778899])
112233
445566
778899
thisisastring'
thisisastring
3注释语句
注释语句的一般格式是:
%注释文字
注释语句的功能是,对程序中的语句做必要的说明。
注释语句紧跟在被说明语句之后;
文字应尽可能中肯、简单、扼要,避免与其它注释相矛盾。
如在命令窗口输入:
editsqrt,回车后即可得到关于sqrt()函数的解释语句如下:
%SQRTSquareroot.
%SQRT(X)isthesquarerootoftheelementsofX.Complex
%resultsareproducedifXisnotpositive.
%
%SeealsoSQRTM,REALSQRT,HYPOT.
%Copyright1984-2005TheMathWorks,Inc.
%$Revision:
5.7.4.5$$Date:
2005/04/2819:
53:
41$
%Built-infunction.
4中断语句
中断语句的一般格式是:
break
中断语句的功能是,终止一个循环语句的执行过程,即利用break命令跳出for,while循环。
5暂停语句
暂停语句的一般格式是:
pause或
pause(n)
暂停语句的功能是,pause是程序暂时停止运行,直到按下回车键,继续执行程序;
而pause(n)是中断n秒后,程序自动继续执行。
请注意,Ctrl-C键(即同时按Ctrl及C二个键)是用来中止执行中的MATLAB的工作。
6回显语句
回显语句的一般格式是:
echoon/off
回显语句的功能是,控制是否在屏幕上回显MATLAB的正在执行的语句。
系统默认的状态是echooff。
该语句对于调试程序很有帮助。
7错误消息显示命令
错误消息显示命令
error('
thisisanerror'
)%根据用户的需要有意地设置错误提示error(字符串)
如果上述程序出错,系统将有如下输出:
thisisanerror
【例6.19】:
a=input('
pleaseinputapositive:
);
ifa<
pleaseinputapositive'
a
在搜索路径之下,保存为li6_19.m,在命令窗口键入li6_19,即可得到相应的结果。
li6_19
-3
?
Errorusing==>
li6_19at3
pleaseinputapositive
结果给出错误提示:
请输入一个正数。
【例6.20】:
建立M函数文件sum_mean,对指定的数组元素求和及均值:
function[su,av]=sum_mean(a)
[m,n]=size(a);
if(~((m==1)|(n==1))|(m==1)&
(n==1))
error('
inputmustbeavector'
su=sum(a);
av=su/length(a);
在搜索路径之下,保存为sum_mean.m,在命令窗口键入:
[a,b]=sum_mean(1:
100)
即可得到相应正确的结果:
a=5050,b=50.5000
而如果不输入一个向量,如:
[a,b]=sum_mean([12;
34])
sum_meanat4
inputmustbeavector
输入量必须是一个向量
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB课件 第6章MATLAB程序语句 MATLAB 课件 程序 语句