第4章matlab程序流程控制_习题答案
MATLAB程序设计与应用习题

X =
1 1 1 0
2.11设a=[0 100],求~a的值?(非运算)
答:>> clear
>> a=[0 1 0 0]
a =
0 1 0 0
>> x=not(a)
x =
1 0 1 1
2.12设a=[0 120],b=[21 0 0],求axor b的值?
答:>> clear
答:>> clear
>> a=[0 2 1 0]
a =
0 2 1 0
>> b=[2 1 0 0]
b =
2 1 0 0
>> x=and(a,b)
x =
0 1 0 0
2.10设a=[0 120],b=[120 0],求a|b的值?(或运算)
答:
>> clear
>> a=[0 1 2 0];b=[1 2 0 0];
答:quit:关闭MATLAB。
clear:清除内存中的变量。
cla:清除坐标。
clf:清除图形。
clc:清除MATLAB命令窗口的所有显示信息。
hold:控制当前图形窗口是否被刷新。
1.9学会打开并保存程序编辑窗口,并在M文档中编写1.4的运算程序并进行运算。
答:要打开程序编辑窗口,我们可以在Command Window窗口中,单击工具栏中最左端显示为一张白纸的工具按钮。这样就打开了一个空白的程序编辑窗口,如图1-6所示。
3.6已知
将a(2,3)=-1替换为a(2,3)=0。
答:
3.7已知
将a的第二行元素全部替换为0,然后将第二列元素全部替换为1。
MATLAB实验指导书(附答案)

MATLAB基础实验指导书漳州师范学院物电系2010年10月目录实验一MATLAB环境的熟悉与基本运算 (2)实验二MATLAB数值运算 (8)实验三MATLAB语言的程序设计 (12)实验四MATLAB的图形绘制 (16)实验五采用SIMULINK的系统仿真 (20)实验六MATLAB在电路中的应用 (25)实验七MATLAB在信号与系统中的应用 (27)实验八MATLAB在控制理论中的应用 (29)实验一 MATLAB环境的熟悉与基本运算一、实验目的:1.熟悉MATLAB开发环境2.掌握矩阵、变量、表达式的各种基本运算二、实验基本知识:1.熟悉MATLAB环境:MATLAB桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器文件和搜索路径浏览器。
2.掌握MATLAB常用命令3.MATLAB变量与运算符变量命名规则如下:(1)变量名可以由英语字母、数字和下划线组成(2)变量名应以英文字母开头(3)长度不大于31个(4)区分大小写MATLAB中设置了一些特殊的变量与常量,列于下表。
MATLAB运算符,通过下面几个表来说明MATLAB的各种常用运算符表2 MATLAB算术运算符表3 MATLAB关系运算符表4 MATLAB逻辑运算符表5 MATLAB特殊运算4.MATLAB的一维、二维数组的寻访表6 子数组访问与赋值常用的相关指令格式5.MATLAB的基本运算表7 两种运算指令形式和实质内涵的异同表6.MATLAB的常用函数表8 标准数组生成函数表9 数组操作函数三、实验内容1、学习使用help命令,例如在命令窗口输入help eye,然后根据帮助说明,学习使用指令eye(其它不会用的指令,依照此方法类推)2、学习使用clc、clear,观察command window、command history和workspace等窗口的变化结果。
3、初步程序的编写练习,新建M-file,保存(自己设定文件名,例如exerc1、exerc2、exerc3……),学习使用MATLAB的基本运算符、数组寻访指令、标准数组生成函数和数组操作函数。
第4章 MATLAB程序流程控制

第4章 MATLAB程序流程控制
2.switch语句 switch语句根据表达式的取值不同,分别执行不 同的语句,其语句格式为:
第4章 MATLAB程序流程控制
(3) 多分支if语句: if 条件1 语句组1 elseif 条件2 语句组2 …… elseif 条件m 语句组m else 语句组n end
第4章 MATLAB程序流程控制
第4章 MATLAB程序流程控制
例4-4 输入一个字符,若为大写字母,则输出其对应 的小写字母;若为小写字母,则输出其对应的大写 字母;若为数字字符则输出其对应的数值,若为其 他字符则原样输出。
age is 17>> >> fprintf('age is %d\n',17); age is 17
第4章 MATLAB程序流程控制
例4-2 求一元二次方程ax2 +bx+c=0的根。 程序如下: a=input('a=?'); b=input('b=?'); c=input('c=?'); delta=b*b-4*a*c; x=[(-b+sqrt(delta))/(2*a),(-b-sqrt(delta))/(2*a)]; disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);
M文件的扩展名为.mFra bibliotek第4章 MATLAB程序流程控制
1.建立新的M文件 为建立新的M文件,启动MATLAB编辑器有3种方法。 ① 在MATLAB主窗口选择“主页”选项卡,在“文件” 命令组中单击“新建脚本”命令按钮。 ② 在MATLAB命令行窗口输入命令: edit 文件名 启动MATLAB编辑器后,输入M文件的内容并存盘。 ③ 在命令历史窗口选中一些命令(按住Ctrl可同时选 择多条命令),然后从右键快捷菜单中选择“创建 脚本”命令,将会启动MATLAB编辑器,并在编辑 区中加入所选中的命令。
MATLAB流程控制脚本文件编制参考答案

1.判断三角形clca=input('');b=input('');c=input('');if a+b>c&&b+c>a&&a+c>aswitch 1case a==b==cdisp(1)case a==b|b==c|a==cdisp(2)otherwise disp(3)endelsedisp(0)end2、费波纳切数列:1、1、2、3、5、8、13……,其递推公式为:a(1)=a(2)=1,a(n)=a(n-1)+a(n-2)(n>=3)。
编程实现求n项的费波纳切数列。
要求:用M语言脚本文件实现;对输入的错误数据格式(如字符串、小数等)能够给出错误提示。
(函数)function y=feibonaqie(n)%求费波纳切数列a(1)=1;a(2)=1;%n=input('请输入项数n:');if(n==1)a(n)=1;elseif(n==2)a(n)=1;elseif(n>=3)i=3;while(i<=n)a(i)=a(i-1)+a(i-2);i=i+1;endendy=a(n);(脚本)clc;a(1)=1;n=input('请输入项数n :');if(n==1)a(n)=1;elseif(n==2)a(n)=1;elseif(n>=3)i=3;while(i<=n)a(i)=a(i-1)+a(i-2);i=i+1;endendsprintf('a(%u)=%u',n,a(n))9X9乘法表for i=1:9;A=[];for j=1:i;A=[A,sprintf('%d ×%d=%2d ',j,i,i*j)];enddisp(A)end3、古代的数学家祖冲之利用正多边形逼近的割圆法计算了常数pi 的值,请编程实现,要求精确到小数点后的第10位。
第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.程序调试时用于设置断点的函数是()。
第4章 MATLAB程序流程控制_习题答案

第4章 MATLAB程序流程控制习题4一、选择题1.下列关于脚本文件和函数文件的描述中不正确的是()。
AA.函数文件可以在命令行窗口直接运行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;while kk=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.程序调试时用于设置断点的函数是()。
matlab第四章课后答案

%Exerc ise 1(1)r oots([1 11])%Exer cise1(2)roots([3 0 -4 0 2 -1])%Exerc ise 1(3)p=zero s(1,24);p([1 17 1822])=[5 -6 8 -5];ro ots(p)%E xerci se 1(4)p1=[2 3];p2=conv(p1,p1);p3=co nv(p1, p2);p3(end)=p3(en d)-4; %原p3最后一个分量-4r oots(p3)%Exer cise2fun=inli ne('x*log(sqrt(x^2-1)+x)-sqrt(x^2-1)-0.5*x');fzer o(fun,2)%Exer cise3fun=inli ne('x^4-2^x');fplot(fun,[-2 2]);gr id on;fze ro(fu n,-1),fzer o(fun,1),f minbn d(fun,0.5,1.5)%Exe rcise 4fu n=inl ine('x*sin(1/x)','x');fp lot(f un, [-0.10.1]);x=z eros(1,10);fori=1:10, x(i)=fz ero(f un,(i-0.5)*0.01);end;x=[x,-x]%Ex ercis e 5f un=in line('[9*x(1)^2+36*x(2)^2+4*x(3)^2-36;x(1)^2-2*x(2)^2-20*x(3);16*x(1)-x(1)^3-2*x(2)^2-16*x(3)^2]','x');[a,b,c]=fso lve(f un,[0 0 0])%E xerci se 6fun=@(x)[x(1)-0.7*si n(x(1))-0.2*cos(x(2)),x(2)-0.7*cos(x(1))+0.2*sin(x(2))]; [a,b,c]=fsolv e(fun,[0.5 0.5])%E xerci se 7clear; clo se; t=0:p i/100:2*pi;x1=2+sqr t(5)*cos(t); y1=3-2*x1+sq rt(5)*sin(t);x2=3+s qrt(2)*cos(t);y2=6*sin(t);pl ot(x1,y1,x2,y2); gri d on; %作图发现4个解的大致位置,然后分别求解y1=fsolv e('[(x(1)-2)^2+(x(2)-3+2*x(1))^2-5,2*(x(1)-3)^2+(x(2)/3)^2-4]',[1.5,2])y2=fsolv e('[(x(1)-2)^2+(x(2)-3+2*x(1))^2-5,2*(x(1)-3)^2+(x(2)/3)^2-4]',[1.8,-2])y3=fsol ve('[(x(1)-2)^2+(x(2)-3+2*x(1))^2-5,2*(x(1)-3)^2+(x(2)/3)^2-4]',[3.5,-5])y4=fso lve('[(x(1)-2)^2+(x(2)-3+2*x(1))^2-5,2*(x(1)-3)^2+(x(2)/3)^2-4]',[4,-4])%Exerc ise 8(1)c lear;fun=inlin e('x.^2.*(x.^2-x-2)');fp lot(f un,[-2 2]);grid on;%作图观察x(1)=-2;x(2)=fminb nd(fu n,-1,-0.5);x(4)=fmi nbnd(fun,1,2);fun2=inlin e('-x.^2.*(x.^2-x-2)');x(3)=f minbn d(fun2,-0.5,0.5);x(5)=2feval(fun,x)%答案: 以上x(2)(4)是局部极小,x(1)(3)(5)是局部极大,从最后一句知道x(1)全局最大, x(4)最小。
MATLAB原理及应用实验报告第四章答案

《MATLAB 原理及应用》实验报告三.课后练习题答案1.为 ⎪⎩⎪⎨⎧<-=>+=01001x x x xx x y 编写赋值程序。
程序如下:①建立如下的M 文件:x=input('x=');%让用户通过键盘输入数值、字符串或表达式if x>0y=x+1;elseif x==0y=x;else x<0y=x-1;e nd程序执行结果如下>> kh1 %在当前工作目录下,文件名为“kh.1.m ” x=1>> yy =22.使用for ... end循环的array向量编程求出1+3+5...+100 的值程序如下:sum=0;>> for k=1:2:100sum=sum+k;end>> sumsum =25003.计算1+3+5...+100 的值,当和大于1000时终止计算。
程序如下:sum=0;for m=1:2:100; %建立1 3 5….100的向量if sum<=1000 %如果sum小于1000则可以继续加sum=sum+m; %累加elsebreak; %若sum的结果不符合条件就跳出整个循环endend结果为:sum =1024k =653.1计算从1开始多少个自然数之和超过100。
程序如下:>> sum=0;n=0;>> while sum<=100n=n+1;sum=sum+n;end结果为:n =14sum =1054.求1!+2!+3!+……+8!的值程序如下:n=1;sum=1;for m=2:8; %循环7次使得得到各次阶乘n=n*m;sum=sum+n; %累加end结果为:sum =462335.写程序,判断一年是否为闰年,符合下面两条件之一:(1990~2014)A、能被4整除,不能被100整除B、能被400整除程序如下count=0;for y=1990:2014;if((rem(y,4)==0&rem(y,100)~=0)|(rem(y,4)==0&rem(y,400)~=0));count=count+1;endend结果为:count =5。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第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.10 4.设有程序段k=10;while kk=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.调用函数时,如果函数文件名与函数名不一致,则使用()。
AA.函数文件名 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,3 B.22 C.3 D.2510.程序调试时用于设置断点的函数是()。
AA.dbstop B.dbclear C.dbcont D.dbstack二、填空题1.将有关MATLAB命令编成程序存储在一个扩展名为.m的文件中,该文件称为。
M文件2.有语句“for k=[12;34]”引导的循环结构,其循环体执行的次数为。
1 3.MATLAB中用于控制不确定重复次数的循环语句为,若在循环执行过程中需要终止该循环时采用的语句为。
while…end,break4.函数文件由语句引导。
在函数定义时,函数的输入输出参数称为参数,简称。
在调用函数时,输入输出参数称为参数,简称。
function,形式,形参,实际,实参5.在MATLAB中,函数文件中的变量是变量。
定义变量是函数间传递信息的一种手段,可以用命令定义。
局部,全局,global6.应用程序的错误有两类,一类是错误,另一类是运行时的错误,即错3 误。
MATLAB 程序调试方法有两种,一是利用 进行程序调试,二是利用 进行程序调试。
语法,逻辑,调试函数,调试工具三、应用题1.写出下列程序的输出结果。
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)~=0s=s+k(j);endendends2.分别用if 语句和switch 语句实现以下计算,其中a 、b 、c 的值从键盘输入。
⎪⎪⎩⎪⎪⎨⎧<≤+<≤+<≤++=5.55.3,ln 5.35.1,sin 5.15.0,2x x c b x x b a x c bx ax y c if 语句:a=input('a=');b=input('b=');c=input('c=');x=input('x=');if <=x&x<y=a*x^2+b*x+c;elseif <=x&x<y=a*(sin(b))^c+x;elseif <=x&x<y=log(abs(b+c/x));endyswitch 语句:a=input('a=');b=input('b=');c=input('c=');x=input('x=');switch fix(x*10)case num2cell(5:14)y=a*x^2+b*x+c;case num2cell(15:34)y=a*(sin(b))^c+x;case num2cell(35:54)y=log(abs(b+c/x));otherwisedisp('nsrdxcw')endy3.产生20个两位随机整数,输出其中小于平均值的偶数。
x=fix(10+rand(20)*89);a=sum(x)/20;for i=1:20if x(i)<aif rem(x(i),2)==0disp(x(i))endendend4.输入20个数,求其中最大数和最小数。
要求分别用循环结构和调用MATLAB的max 函数、min函数来实现。
循环结构:for a=1:20A(a)=input('请输入20个数:');endAmi=A(1);ma=A(1);for i=1:20if mi>A(i)mi=A(i);endif ma<A(i)ma=A(i);5endenddisp(ma)disp(mi)max 、min 函数:for a=1:20A(a)=input('请输入20个数:');endAmi=min(A),ma=max(A)5.已知s=1+2+22+23+…+263分别用循环结构和调用MATLAB 的sum 函数求s 的值。
循环结构:s=0;for x=0:63s=2^x+s;enddisp(s)sum 函数:i=0:63;f=2.^i;sum(f)6.当n 分别取100、1000、10000时,求下列各式的值: (1) )2ln (1)1(41312111=+-++-+-+ nn (2) )4(7151311π=+-+- (3) )31(4164116141=+++++ n (4) )2()12)(12()2)(2(756653443122πn n n n =⎪⎪⎭⎫ ⎝⎛+-⎪⎭⎫ ⎝⎛⨯⨯⎪⎭⎫ ⎝⎛⨯⨯⎪⎭⎫ ⎝⎛⨯⨯ 要求分别用循环结构和向量运算(使用sum 或prod 函数)来实现。
(1):循环结构:n=input('请输入n 的值:');s=0;for a=1:ns=s+(-1)^(a+1)/a;ends向量运算:n=input('请输入n的值:'); a=1:n;f=(-1).^(a+1)./a;s=sum(f)(2):循环结构:n=input('请输入n的值:'); s=0;for a=1:n;s=s+(-1)^(a+1)/(2*a-1); ends向量运算:n=input('请输入n的值:'); a=1:n;f=(-1).^(a+1)./(2*a-1);s=sum(f)(3):循环结构:n=input('请输入n的值:'); s=0;for a=1:ns=s+(1/4)^a;ends向量运算:n=input('请输入n的值:'); a=1:n;f=(1/4).^a;s=sum(f)(4):7循环结构:n=input('请输入n 的值:');s=1;for a=1:nf=(2*a)^2/((2*a-1)*(2*a+1));s=s*f;ends向量运算:n=input('请输入n 的值:');a=1:n;f=(2*a).^2./((2*a-1).*(2*a+1));s=prod(f)7.编写一个函数文件,求小于任意自然数n 的斐波那契(Fibnacci )数列各项。
斐波那契数列定义如下:121211(2)nn n f f f f f n --=⎧⎪=⎨⎪=+>⎩ function f=Fibnacci(n)for i=1:nif i==1f=1;elseif i==2f=1;elsef=Fibnacci(i-1)+Fibnacci(i-2);endendn=input('n=');f=Fibnacci(n) 8.编写一个函数文件,用于求两个矩阵的乘积和点乘,然后在脚本文件中调用该函数。
function [C,D]=CJ(A,B)C=A*B;D=A.*B;A=[1 2 3;4 5 6;7 8 9];B=[1 1 1;1 1 1;1 1 1];[C,D]=CJ(A,B)9.先用函数的递归调用定义一个函数文件求1n m i i=∑,然后调用该函数文件求∑∑∑===++10501210011k k k kkk 。
function f=xt4_10(m,n)if n<1f=0;elsef=n^m+xt4_10(m,n-1);endxt4_10(1,100)+xt4_10(2,50)+xt4_10(-1,10)10.写出下列程序的输出结果。
脚本文件:global xx=1:2:5;y=2:2:6;sub(y);xy函数文件:function fun=sub(z)global xz=3*x;x=x+z;。