第四章 MATLAB 程序设计

合集下载

《MATLAB_程序设计与应用》刘卫国高等教育出版社-第4章课后答案

《MATLAB_程序设计与应用》刘卫国高等教育出版社-第4章课后答案

第四章1.a=input('请输入一个4位数:');while (a<1000|a>9999)a=input('输入错误,请重新输入一个4位数:'); endb=fix(a/1000);c=rem(fix(a/100),10);d=rem(fix(a/10),10);e=rem(a,10);b=b+7;c=c+7;d=d+7;e=e+7;b=rem(b,10);c=rem(c,10);d=rem(c,10);e=rem(e,10);g=b;b=d;d=g;g=c;c=e;e=g;a=1000*b+100*c+10*d+e;disp(['加密后:',num2str(a)])2.逻辑表达式法:a=input('请输入a: ');b=input('请输入b: ');c=input('请输入c: ');x=0.5:1:5.5;x1=(x>=0.5&x<1.5);x2=(x>=1.5&x<3.5);x3=(x>=3.5&x<=5.5);y1=a.*(x.^2)+b.*x+c;y2=a*(sin(b)^c)+x;y3=log(abs(b+c./x));y=y1.*x1+y1.*x2+y3.*x3; disp(y)if语句法:a=input('请输入a: ');b=input('请输入b: ');c=input('请输入c: ');for x=0.5:1:5.5if x>=0.5 & x<1.5y=a.*(x.^2)+b.*x+celseif x>=1.5 & x<3.5y=a*(sin(b)^c)+xelseif x>=3.5 & x<5.5y=log(abs(b+c./x))endendswitch语句法:a=input('请输入a: ');b=input('请输入b: ');c=input('请输入c: ');for x=0.5:1:5.5switch floor(x/0.5)case {1,2}y=a.*(x.^2)+b.*x+c;case {3,4,5,6}y=a*(sin(b)^c)+x;case {7,8,9,10}y=log(abs(b+c./x)); enddisp(y)end3.x=fix(rand(1,20)*89)+10;x1=mean(x);n=find(rem(x,2)==0 & x<x1);disp(['小于平均数的偶数是:',num2str(x(n))]);4.(1)A=input('请输入20个数的一个行向量:');a=A(1);b=A(1);for m=Aif a>=ma=m;elseif b<=mb=m;endenddisp(['最小数是:',num2str(a)])disp(['最大数是:',num2str(b)])(2)A=input('请输入20个数的一个行向量:'); maxval=max(A)minval=min(A)5.s=0;for a=0:63c=2^a;s=s+c;enddisp(['2的0次方到63次方的和是:',num2str(s)])k=0:63n=2.^ks=sum(n)6.(1)sum1=0;for n=1:100x=(-1)^(n+1)*(1/n);sum1=sum1+x;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=0;for n=1:1000x=(-1)^(n+1)*(1/n);sum2=sum2+x;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=0;for n=1:10000x=(-1)^(n+1)*(1/n);sum3=sum3+x;enddisp(['当n取10000时:sum=',num2str(sum3)])(2)sum1=0;n1=0;for n=1:2:100x=(-1)^n1*(1/n);sum1=sum1+x;n1=n1+1;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=0;n2=0;for n=1:2:1000x=(-1)^n2*(1/n);sum2=sum2+x;n2=n2+1;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=0;n3=0;for n=1:2:10000x=(-1)^n3*(1/n);sum3=sum3+x;n3=n3+1;enddisp(['当n取10000时:sum=',num2str(sum3)])(3)sum1=0;for n=1:100x=1/(4^n);sum1=sum1+x;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=0;for n=1:1000x=1/(4^n);sum2=sum2+x;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=0;for n=1:10000x=1/(4^n);sum3=sum3+x;enddisp(['当n取10000时:sum=',num2str(sum3)])(4)sum1=1;for n=1:100x=4*n*n/(2*n-1)/(2*n+1);sum1=sum1*x;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=1;for n=1:1000x=4*n*n/(2*n-1)/(2*n+1);sum2=sum2*x;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=1;for n=1:10000x=4*n*n/(2*n-1)/(2*n+1);sum3=sum3*x;enddisp(['当n取10000时:sum=',num2str(sum3)])7.函数文件function f=fibnacci(n)if n==1 | n==2f=1;elsef=fibnacci(n-1)+fibnacci(n-2);end命令文件:shulie=[];for k=1:nshulie=[shulie fibnacci(k)];endshulie8.function [f1,f2]=juzhenji(x1,x2)f1=x1*x2;f2=x1.*x2;命令文件:clear alla=input('请输入一个矩阵:');b=input('请再输入一个矩阵:(注意:两矩阵要可以相乘)'); [f1,f2]=juzhenji(a,b);disp(f1)disp(f2)9.function sum=qiuhe(n,m)if n<=1sum=0;elsesum=n^m+qiuhe(n-1,m);end命令文件:clear ally=qiuhe(100,1)+qiuhe(50,2)+qiuhe(10,-1);disp(y)10.s=0;a=[12,13,14;15,16,17;18,19,20;21,22,23];for k=afor j=1:4if rem(k(j),2)~=0 s=s+k(j);endendendss =108(2)global xx=1:2:5;y=2:2:6;sub(y);xyfunction fun=sub(z) global xz=3*x;x=x+z;x =4 12 20 y =2 4 6。

第四章MATLAB程序设计

第四章MATLAB程序设计
while <条件1>
……
if <条件2>
break
end
……
end
2.continue语句
continue语句用于提前结束循环,可用于while和for语句结构中。
while <条件1>
……
if <条件2>
continue;
end
……
end
3.try
4.return
5.keyboard
6.pause
图4-2
在MATLAB中,选择语句结构由两种语句结构实现。
1.if语句
if语句是实现MATLAB选择结构的最主要形式,其基本格式为:
if表达式
程序模块1
else
程序模块2
end
在这里,如果表达式的值为真(非零值),则执行程序模块1,然后跳过程序模块2,向下执行后续语句;如果表达式的值为假(零值),则执行程序模块2,然后向下执行。
程序end
2.switch语句
虽然多分支if语句可以实现多重选择,但如果分支过多,则嵌套的if语句的层次就会很多,使程序可读性差,而使用swith语句就比较简洁明了,其格式为:
switch表达式
case数值1
程序模块1
case数值2
程序模块2
。。。
otherwise
程序模块n
其格式为:
for循环变量=起始值:步长:终止值
循环体
end
其中步长值可以在正实数和负实数范围内任意指定,默认值为1.对于正数,当循环变量的值大于终止值时,循环结束;对于负数,当循环变量的值小于终止值时,循环结束。
2.while语句循环结构

matlab第四章课件

matlab第四章课件

4.1.1 M文件的分类
M文件是由若干 Matlab 命令组合在一起构成的,它可 以完成某些操作,也可以实现某种算法
事实上,Matlab 提供的内部函数以及各种工具箱,都是利用 Matlab 语言编写的 M文件 用户也可以结合自己的工作需要,开发自己的程序或工具箱
M文件根据调用方式的不同可以分为两类: Script file:命令文件/脚本文件 Function file:函数文件
例2 输入x,y的值,并将它们的值互换后输出(swap.m)。 x=input('Input x please.'); y=input('Input y please.'); z=x; x=y; y=z; disp(x); disp(y); 例3 求一元二次方程ax2 +bx+c=0的根(root.m)。 a=input('a=?'); b=input('b=?'); c=input('c=?'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]; disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);
例如:
s=0; a=[12 13 14;15 16 17;18 19 20;21 22 23] for k=a s=s+k; end disp(s); 该程序的功能是求矩阵各行元素之和,执行结果是: 39 48 57 66
while语句
while expr (条件) statement(循环体语句) end 若expr成立,则执行循环体的内容,执行后 再判断条件是否为真,如果不成立则跳出循环体。

第4章MATLAB程序设计

第4章MATLAB程序设计
27
例4-12 求[100,200]之间第一个能被21整除的整数。 程序如下:
for n=100:200 if rem(n,21)~=0
continue end break end n
28
4.循环的嵌套 如果一个循环结构的循环体又包括一个循环结构,就
称为循环的嵌套,或称为多重循环结构。实现多重循环 结构仍用前面介绍的3种循环语句。因为任一循环语句 的循环体部分都可以包含另一个循环语句。
1.for语句 for语句的格式为:
for 循环变量=表达式1:表达式2:表达式3 循环体语句
end 其中表达式1的值为循环变量的初值,表达式2的值 为步长,表达式3的值为循环变量的终值。步长为1 时,表达式2可以省略。
21
例4-8 一个三位整数各位数字的立方和等于该数本 身则称该数为水仙花数。输出全部水仙花数。
end 执行过程是依次将矩阵的各列元素赋给循环变量,
然后执行循环体语句,直至各列元素处理完毕。 例3-10 写出下列程序的执行结果。
s=0;
a=[12,13,14;15,16,17;18,19,20;21,22,23];
for k=a
s=s+k;
end
disp(s');
24
2.while语句 while语句的一般格式为: while (条件) 循环体语句 end 其执行过程为:若条件成立,则执行循环体语句,执 行后再判断条件是否成立,如果不成立则跳出循环。
2500≤price<5000 10%折扣
5000≤price 14%折扣
输入所售商品的价格,求其实际销售价格。
17
程序如下:
price=input('请输入商品价格');

《MATLAB_程序设计与应用》刘卫国高等教育出版社-第4章课后答案

《MATLAB_程序设计与应用》刘卫国高等教育出版社-第4章课后答案

第四章1.a=input('请输入一个4位数:');while (a<1000|a>9999)a=input('输入错误,请重新输入一个4位数:'); endb=fix(a/1000);c=rem(fix(a/100),10);d=rem(fix(a/10),10);e=rem(a,10);b=b+7;c=c+7;d=d+7;e=e+7;b=rem(b,10);c=rem(c,10);d=rem(c,10);e=rem(e,10);g=b;b=d;d=g;g=c;c=e;e=g;a=1000*b+100*c+10*d+e;disp(['加密后:',num2str(a)])2.逻辑表达式法:a=input('请输入a: ');b=input('请输入b: ');c=input('请输入c: ');x=0.5:1:5.5;x1=(x>=0.5&x<1.5);x2=(x>=1.5&x<3.5);x3=(x>=3.5&x<=5.5);y1=a.*(x.^2)+b.*x+c;y2=a*(sin(b)^c)+x;y3=log(abs(b+c./x));y=y1.*x1+y1.*x2+y3.*x3; disp(y)if语句法:a=input('请输入a: ');b=input('请输入b: ');c=input('请输入c: ');for x=0.5:1:5.5if x>=0.5 & x<1.5y=a.*(x.^2)+b.*x+celseif x>=1.5 & x<3.5y=a*(sin(b)^c)+xelseif x>=3.5 & x<5.5y=log(abs(b+c./x))endendswitch语句法:a=input('请输入a: ');b=input('请输入b: ');c=input('请输入c: ');for x=0.5:1:5.5switch floor(x/0.5)case {1,2}y=a.*(x.^2)+b.*x+c;case {3,4,5,6}y=a*(sin(b)^c)+x;case {7,8,9,10}y=log(abs(b+c./x)); enddisp(y)end3.x=fix(rand(1,20)*89)+10;x1=mean(x);n=find(rem(x,2)==0 & x<x1);disp(['小于平均数的偶数是:',num2str(x(n))]);4.(1)A=input('请输入20个数的一个行向量:');a=A(1);b=A(1);for m=Aif a>=ma=m;elseif b<=mb=m;endenddisp(['最小数是:',num2str(a)])disp(['最大数是:',num2str(b)])(2)A=input('请输入20个数的一个行向量:'); maxval=max(A)minval=min(A)5.s=0;for a=0:63c=2^a;s=s+c;enddisp(['2的0次方到63次方的和是:',num2str(s)])k=0:63n=2.^ks=sum(n)6.(1)sum1=0;for n=1:100x=(-1)^(n+1)*(1/n);sum1=sum1+x;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=0;for n=1:1000x=(-1)^(n+1)*(1/n);sum2=sum2+x;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=0;for n=1:10000x=(-1)^(n+1)*(1/n);sum3=sum3+x;enddisp(['当n取10000时:sum=',num2str(sum3)])(2)sum1=0;n1=0;for n=1:2:100x=(-1)^n1*(1/n);sum1=sum1+x;n1=n1+1;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=0;n2=0;for n=1:2:1000x=(-1)^n2*(1/n);sum2=sum2+x;n2=n2+1;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=0;n3=0;for n=1:2:10000x=(-1)^n3*(1/n);sum3=sum3+x;n3=n3+1;enddisp(['当n取10000时:sum=',num2str(sum3)])(3)sum1=0;for n=1:100x=1/(4^n);sum1=sum1+x;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=0;for n=1:1000x=1/(4^n);sum2=sum2+x;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=0;for n=1:10000x=1/(4^n);sum3=sum3+x;enddisp(['当n取10000时:sum=',num2str(sum3)])(4)sum1=1;for n=1:100x=4*n*n/(2*n-1)/(2*n+1);sum1=sum1*x;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=1;for n=1:1000x=4*n*n/(2*n-1)/(2*n+1);sum2=sum2*x;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=1;for n=1:10000x=4*n*n/(2*n-1)/(2*n+1);sum3=sum3*x;enddisp(['当n取10000时:sum=',num2str(sum3)])7.函数文件function f=fibnacci(n)if n==1 | n==2f=1;elsef=fibnacci(n-1)+fibnacci(n-2);end命令文件:shulie=[];for k=1:nshulie=[shulie fibnacci(k)];endshulie8.function [f1,f2]=juzhenji(x1,x2)f1=x1*x2;f2=x1.*x2;命令文件:clear alla=input('请输入一个矩阵:');b=input('请再输入一个矩阵:(注意:两矩阵要可以相乘)'); [f1,f2]=juzhenji(a,b);disp(f1)disp(f2)9.function sum=qiuhe(n,m)if n<=1sum=0;elsesum=n^m+qiuhe(n-1,m);end命令文件:clear ally=qiuhe(100,1)+qiuhe(50,2)+qiuhe(10,-1);disp(y)10.s=0;a=[12,13,14;15,16,17;18,19,20;21,22,23];for k=afor j=1:4if rem(k(j),2)~=0 s=s+k(j);endendendss =108(2)global xx=1:2:5;y=2:2:6;sub(y);xyfunction fun=sub(z) global xz=3*x;x=x+z;x =4 12 20 y =2 4 6。

第4章 MATLAB程序流程控制_习题答案

第4章  MATLAB程序流程控制_习题答案

第4章 MATLAB程序流程控制习题4一、选择题1.下列关于脚本文件和函数文件的描述中不正确的是()。

A A.函数文件可以在命令行窗口直接运行B.去掉函数文件第一行的定义行可转变成脚本文件C.脚本文件可以调用函数文件D.函数文件中的第一行必须以function开始2.下列程序的输出结果是( )。

Dy=10;if y==10y=20;elseif y>0y=30enddisp(y)A.1 B.30 C.10 D.203.有以下语句:a=eye(5);for n=a(2:end,:)for循环的循环次数是()。

CA.3 B.4 C.5 D.104.设有程序段k=10;whilekk=k—1end则下面描述中正确的是()。

AA.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次5.有以下程序段:x=reshape(1:12,3,4);m=0;n=0;for k=1:4if x(:,k)<=6m=m+1;elsen=n+1;endend则m和n的值分别是()。

CA.6 6 B.2 1 C.2 2 D.1 26.调用函数时,如果函数文件名与函数名不一致,则使用()。

A A.函数文件名B.函数名C.函数文件名或函数名均可D.@函数名7.如果有函数声明行为“function [x,y,z]=f1(a,b,c)”,则下述函数调用格式中错误的是()。

BA.x=f1(a,b,c) B.[x,y,z,w]=f1(a,b,c)C.[x,b,z]=f1(a,y,c) D.[a,b]=f1(x,y,z)8.执行语句“fn=@(x)10*x;",则fn是()。

AA.匿名函数B.函数句柄C.字符串D.普通函数9.执行下列语句后,变量A的值是( )。

D>> f=@(x,y) log(exp(x+y));〉〉 A=f(22,3);A.22,3B.22 C.3 D.2510.程序调试时用于设置断点的函数是()。

matlabch04matlab程序设计基础知识

matlabch04matlab程序设计基础知识

MATLAB数组操作
单击此处添加副标题
数组创建与访问
创建数组
使用方括号`[]`创建数组,元素之间用空格或 逗号分隔。例如,`A = [1 2 3; 4 5 6]`创建一 个2x3的数组。
访问数组元素
通过下标访问数组元素,下标从1开始。例如, `A(1,2)`访问数组A的第1行第2列元素。
访问数组子集
matlabch04matlab 程序设计基础知识
添加副标题
汇报人姓名


单击添加文本
单击添加文本
MATLAB程序设计概述
单击此处添加副标题
MATLAB简介
23% Option 1
M AT L A B 定 义
MATLAB是Matrix Laboratory (矩阵实验室)的缩写,是一款由 MathWorks公司开发的商业数学 软件。
工程和科学计算 MATLAB被广泛应用于工程和科学计算 领域,如信号处理、图像处理、控制系
统设计等。 算法开发与仿真 MATLAB支持算法开发和仿真,可用 于机器学习、深度学习、优化算法等
领域。
数据分析与可视化
MATLAB提供了丰富的数据分析和可 视化工具,可用于数据挖掘、统计分 析、数据可视化等方面。
数据类型 MATLAB支持多种数据类型,包括数值型(整数 和浮点数)、字符型、逻辑型、结构体和单元数 组等。
变量赋值 使用等号(=)进行赋值,例如`x = 5;`将数值5 赋给变量x。
运算符与表达式
用于比较两个值的大小关系,如等于 (==)、不等于(~=)、大于 (>)、小于(<)等。
MATLAB按照运算符优先级和结合性 规则对表达式进行求值。
02
01

MATLAB程序设计基础教程(刘国良)-第4章

MATLAB程序设计基础教程(刘国良)-第4章

函数

第4章 M脚本与M函数
2.脚本M文件 脚本文件也叫命令文件,是独立执行的文件,它不接受输 入参数,不返回任何值,而是代码的结合,该方法允许用户将 一系列MATLAB命令输入到一个简单的脚本“.m”文件中,只 要在MATLAB命令窗口中执行该文件,则会依次执行该文件中 的命令。 脚本M文件中包含一族由MATLAB语言所支持的语句,它类 似于DOS下的批处理文件,它的执行方式很简单,用户只需在 MATLAB 的提示符“>>”下键入该M文件的文件名,这样 MATLAB就会自动执行该M文件中的各条语句,并将结果直接返 回到MATLAB 的工作空间。
第4章 M脚本与M函数
3.块注释 在 MATLAB 5以前的版本中,注释是逐行进行的,采用百 分号(%)进行标记。逐行注释不利于用户增加和修改注释内容。 在MATLAB 5及以后的版本中,用户可以使用“%{”和“%}” 符号进行块注释,“%{”和“%}”分别代表注释块的起始和 结束。
第4章 M脚本与M函数
第4章 M脚本与M函数
在使用脚本文件时需要注意一点:如果当前工作区中存在 与该脚本同名的变量,则当输入该文件名时,系统将其作为变 量名执行。
MATLAB中有一个专门用于寻找“.m”文件的路径搜索器。 “.m”文件是以目录和文件夹的方式分布于文件系统中的,一 部分“.m”文件的目录是MATLAB的子目录,由于MATLAB的一 切操作都是在它的搜索路径,包括当前路径中进行的,因此如 果调用的函数在搜索路径之外,MATLAB就会认为此函数不存 在。
第4章 M脚本与M函数
4.1.2 M文件的建立、运行与命名规则 M文件的语法类似于一般高级语言,是一种程序化的编程
语言,但是与传统的高级语言相比,M文件又有其特点。它只 是一个简单的ASCII码型文本文件,因此,它的语法比一般的 高级语言要简单,程序也容易调试,并具有很好的交互性。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
此命令可使正在运行的函数正
常退出,并返回调用它的代码段继 续运行,它也可强制结束该函数的
执行。如det1.
(4)echo
执行 M 文件时,通常在命令窗 口是看不到执行过程的,但在特殊 情况下(比如演示)要求M文件的 每条命令都要显示出来。这时可以
用echo命令实现这样的功能。
对于脚本, echo 命令可以用以 下方式来实现:
之间的第一个注释行组(之间无空行)
是帮助文本。
(7)在函数中调用脚本文件,等价于在函数 中将脚本文件的内容粘贴在调用的位置。 ( 8 )运行函数和脚本时一定要保证它们在 当前工作目录下。
4.1.3 子函数与主函数
一个 M 文件可以包含多个函数,其中,一个 是主函数,其他是子函数。
主函数必须出现在最上方,其后可有若干子
4.其他控制结构
在程序设计中经常遇到提前终止循环、 跳出子程序、显示出错信息等情况,主要 有 continue 、 break 、 return 、 echo 、 error 、try…catch 等。下面分别对各结构 进行介绍。
(1)continue
其作用是结束本次循环,即 跳过循环体中尚未执行的代码, 接着进行下一次是否执行循环 的判断。
(4)函数被调用时,MATLAB会为它开辟一
函数工作空间(Function
workspace),用来存放中间变量,
当执行完函数文件的最后一条命令或 者遇到return命令时就结束该函数的 运行,返回函数的输出,同时将临时 工作空间清空。
(5)脚本中的变量都是全局变量
(6)在M文件中,从开头到第一个非注释行
下列表示可以作为MATLAB的变量 的是()
A.abcd- 2 B.xyz_2# C.@h D.X_1_a
除了上述命名规则外, MATLAB 还提 供一些特殊的变量,如下表所示。
除命名规则外,变量命名时还需要注 意以下两个方面: (1)变量名不能与已有函数名相同,否则在
内存中有该变量时将不能调用同名函
数;
(2)变量名不能与MATLAB预留的关键字和
特殊变量名相同,否则系统会显示错误
信息。
变量按照作用范围分为局部变量和全 局变量。在 MATLAB 中使用命令 global 声 明全局变量,如下所示: 需要使用指定全局变量的M文件,都必 须在各自的代码中声明此全局变量。只要 存在声明某全局变量的M文件,则全局变量 存在。
price=input('请输入商品价格'); switch fix(price/100) case {0,1} %价格小于200 rate=0; case {2,3,4} %价格大于等于200但小于500 rate=3/100; case num2cell(5:9) %价格大于等于500但小1000 rate=5/100; case num2cell(10:24) %价格大于等于1000但小2500 rate=8/100; case num2cell(25:49) %价格大于等于2500但小5000 rate=10/100; otherwise %价格大于等于5000 rate=14/100; end price=price*(1-rate) %输出商品实际销售价格
MATLAB 提供了调试程序的 工具,利用这些工具可以提高 编程的效率,包括命令行的调 试函数和图形界面的菜单命令。
1.以命令行为主的程序调试
以命令行为主的程序调试手段具有
通用性,可以适用于各种平台,它主 要是应用MATLAB提供的调试命令。 在命令窗口输入help debug可以 看到对于这些命令的简单描述,下面 分别进行介绍。
脚本也是扩展名为 .m 的文件,类 似于 DOS 系统中批处理文件,可包含 MATLAB的各种命令。如例4.4 如果要运行脚本,也需要将脚本所
在目录设置为当前工作目录。
可通过如下方法运行脚本: 在命令窗口中直接键入此文件的文件名,
MATLAB可逐一执行文件内的所有命令。
单击【Debug】菜单下的【Run】;
(3)在程序中的适当位置添加输出变量值的 代码。 ( 4 )在程序中的适当位置添加 keyboard 命令。 复杂的程序,必须采用工具调试法, 即 借 助 MATLAB 提 供 的 工 具 调 试 器 (Debugger)进行调试。
4.3.2 工具调试法
1.以命令行为主的程序调试
2.以图形界面为主的程序调试
单击快捷键F5;
单击工具条上的图标 。
脚本运行过程所产生的变量都是全局变量, 都驻留在MATLAB工作空间内。
结合上例,对函数和脚本进行总结如下。 (1)函数名必须与文件名相同。 (2)脚本没有输入参数和返回值。 (3)函数可以包括零个或多个输入参数和返 回值,如函数nargin和nargout包含输 入参数和返回值的个数。
(2)switch-case-otherwise结构
某商场对顾客所购买的商品实行打折 销售,标准如下(商品价格用price来表 示): price<200 没有折扣 200≤price<500 3%折扣 500≤price<1000 5%折扣 1000≤price<2500 8%折扣 2500≤price<5000 10%折扣 5000≤price 14%折扣 输入所售商品的价格,求其实际销售价 格。
(1)for循环
脚本 for
运行如下程序后, 命令窗口(command windows)显示的结果为( ) s=0; a=[12,13,14;15,16,17;18,19,20]; for k=a s=s+k; end disp(s) A. 144 B. 39 48 57 C.145 D. 45 48 51
Step Response 0.7
0.6
0.5
Amplitude
0.4
0.3
0.2
0.1
0
0
1
2
3
4
5 Time (sec)
6
7
8
9
10
2.循环结构
循环结构是按照给定的条件,重复执 行指定的代码。该结构一般用于有规律的 重 复 运 算 。 在 MATLAB 中 包 括 for 循 环 和 while循环。
在文件名为 mfile 的 M 文件的第 lineno 行设置断点。如果第 lineno 行为非执行语 句,则在其后的第一个可执行语句前设置 断点。
dbstop in mfile at subfun
ቤተ መጻሕፍቲ ባይዱ
在 文 件 名 为 mfile 的 M 文 件 的 子 程 序 subfun的第一个可执行语句前设置断点。 dbstop if error
在使用全局变量中需要注意以下几个方面。
在使用之前必须首先定义,建议将定义放在函
数体的首行位置。
虽然对全局变量的名称并没有特别的限制,但
是为了提高程序的可读性,建议采用大写字符
命名全局变量。 全局变量会损坏函数的独立性,使程序的书写 和维护变得困难,尤其是在大型程序中,不利 于模块化,不推荐使用。
(2)while循环
读程序写结果。 mysum=0;i=1; while i<=100 mysum=mysum+i; i=i+1; end mysum
试问下面程序实现的是什么功能。 sum1=0 for i=0:15 sum1=sum1+2^i; end sum1
3.选择结构
选择结构是根据给定的条件来
函数,子函数的次序可随意调整。主函数和各子
函数的工作空间都是彼此独立的。
MATLAB 的主要功能虽然是数值运算,
但是它也是一个完整的程序语言,包括各 种语句格式和语法规则。
4.2 变量和语句
4.2.1 变量类型 4.2.2 程序控制结构
4.2.1 变量类型
变量命名规则
在 MATLAB 中,变量名必须以字母开 头,之后可以是任意字母、数字或下划线, 但之间不能有空格;区分大小写;第 63 个 字符之后的部分将被忽略。 与C语言不同的是,MATLAB中的变量是不 需要事先定义的,如前3章的例子。
(1)设置断点
这是最重要的部分,可以利用它
来指定程序代码的断点,使得程序在 断点前停止执行,并进入调试模式, 从而可以检查当前各个变量的值。
dbstop in mfile
在文件名为 mfile 的 M 文件的第一个可 执行语句前设置断点。 dbstop in mfile at lineno
(9)pause
此命令用于暂时中止程序的运
行。该命令对程序的调试和查询中 间变量值时很方便。该命令的语法
规则如下:
在编译和运行程序时出现错 误(警告)无法避免,因此掌握 程序调试的方法和技巧对提高工 作效率很重要。
4.3 程 序 调 试
4.3.1 直接调试法
4.3.2 工具调试法
下面针对语法错误和逻辑错 误推荐两种调试方法,即直接
当需要打开一个 M 文件时,可以通过 【File】|【Open】菜单进入文件选择的目 录界面。 本章将着重介绍 M 文件编程的规则和 注意事项。
4.1 M文件基础
4.1.1 函数 4.1.2 脚本 4.1.3 子函数与私有函数 4.1.4 伪代码
M 文件有函数( Functions )和脚本 (Scripts)两种格式。两者的相同之处是 都以 .M 作为扩展名,但二者在语法和使用 上有点区别。 M 文件可以在任意的文本编辑器中进 行创建和编辑,但推荐和默认使用 MATLAB自带的文本编辑器和Notebook。
4.1.1 函数
函数被调用时,通过获取外部参数进行运算, 并向外部返回运算结果。 函数内部的变量都是隐含的,即为局部变量 (除非特别声明),存放在函数本身的工作空间
内,这些变量不能被外部使用,也不会与外部变
相关文档
最新文档