MATLAB 程式设计与应用1答辩
matlab程序设计与应用
matlab程序设计与应用Matlab是一款高效能的编程语言,具有高品质的计算和分析功能,近十多年来被广泛应用在工程计算、科学研究、商业分析、金融模拟和教育工作等多个领域。
它拥有一系列强大的算法编写功能,可以实现非线性矩阵求解、信号处理、图像处理、生物医学信号处理等功能。
本文将介绍Matlab程序设计与应用,以及它在工程计算、科学研究、商业分析等领域的应用和示例。
一、Matlab程序设计Matlab是一种操作方便的高级编程语言,立足于原始编码,它建立在C及FORTRAN之上,而且它的高级结构使得设计程序不必写成复杂的程序框架,而可以把主要精力放在要实现的功能上。
Matlab在程序设计方面支持面向对象编程(Object-oriented programming,OOP)方式,可以实现结构化的程序设计,把大量的程序按照模块和函数来管理,方便调用和重用,并可以利用Matlab的类和类的方法来实现程序的重用和拓展。
二、Matlab在工程计算领域的应用Matlab在工程计算领域的应用如下:(1)Matlab可以用于科学计算,如:数值分析、科学计算、多元函数拟合、图像处理以及信号处理等。
(2)Matlab可以用于设计和调试电子电路,如:数字电路、模拟电路、射频电路、功率电路以及控制电路等。
(3)Matlab可以用于控制系统分析,如:数模转换、频响函数以及过程控制等。
(4)Matlab可以用于机械结构设计,如:机械结构分析、运动学以及动力学等。
三、Matlab在科学研究和商业分析领域的应用Matlab在科学研究和商业分析领域的应用如下:(1)Matlab可以用于统计学研究,如:概率统计、偏差分析、多元分析以及非参数分析等。
(2)Matlab可以用于数据挖掘,如:决策树分类、聚类分析以及因子分析等。
(3)Matlab可以用于仿真研究,如:求解方程、模拟实验以及模型预测等。
(4)Matlab可以用于商业分析,如:市场调研、销售预测以及风险评估等。
MATLAB程序设计及应用实例
MATLAB程序设计及应用实例MATLAB(Matrix Laboratory)是一种用于算法开发、数据分析、可视化和数值计算的高级技术计算语言和环境。
它的强大功能和灵活性使其成为各个领域研究和工程实践中广泛使用的工具。
下面将介绍几个MATLAB程序设计及应用的实例。
1.信号处理:MATLAB是信号处理的强大工具,它可以用于滤波、频谱分析、小波变换、分析和合成音频信号等。
例如,可以利用MATLAB进行语音信号的去噪处理,通过设计特定的滤波器来去除信号中的噪声成分,从而提取出清晰的语音信号。
2.图像处理:MATLAB可以进行图像的加载、处理和分析。
它提供了丰富的图像处理函数和工具箱,可以实现图像的滤波、二值化、边缘检测、图像增强等操作。
例如,可以使用MATLAB对医学图像进行分割,将感兴趣的区域提取出来,辅助医生进行病灶诊断。
3.控制系统设计:MATLAB是控制系统设计的有效工具。
它提供了丰富的控制系统分析和设计函数,可以进行系统建模、模拟和优化。
例如,可以使用MATLAB进行PID控制器的参数调整,通过对系统建模和后续仿真,优化PID控制器的参数,提高控制系统的性能和稳定性。
4.机器学习:MATLAB提供了强大的机器学习和深度学习工具箱,可以进行数据预处理、特征提取、模型训练和评估等操作。
例如,可以利用MATLAB进行图像分类,通过构建深度卷积神经网络模型,将输入的图像进行分类和识别。
5.数值计算:MATLAB对线性代数、数值优化和统计分析等有着强大的支持。
它提供的优化和求解函数可以解决复杂的线性和非线性优化问题,例如最小二乘拟合和参数估计等。
此外,MATLAB还拥有强大的统计分析工具,可以进行假设检验、数据拟合、方差分析等统计分析操作。
6.仿真模拟:MATLAB可以进行动态系统的建模和仿真,通过搭建系统方程和初始条件,可以对系统的动态响应进行模拟。
例如,在电力系统中,可以使用MATLAB进行电力系统稳定性分析,对电力系统的动态响应进行跟踪和分析。
基于Matlab软件的理论力学答辩
系统演示
圆锥陀螺相关物理量随时间的变化图
四、结论
• 本文结合理论力学中刚体绕瞬心的转动、弹簧摆 运动、圆锥陀螺运动等方面的典型例题,讲述如 何通过Matlab 软件实现理论力学教学的可视化问 题,通过以上的讨论可以发现:在理论力学教学 中结合MATLAB软件,一方面增加了教学的多样性 ,为理论力学的教学质量的提高提供保障。另一 方面,可以将抽象的力学问题具体化,使学生对 物理问题有直观的认识,加深对物理问题的理解 ,从而提高学习的效率。
致谢
• 在我论文的选题、开题到成文全过程遇到了无数 的困难和障碍,都是在我的导师李秀燕教授的悉 心指导下,还有不厌其烦的对我的论文进行修改 和改进下度过的,特此感谢,同时也非常感谢物 理与电子信息工程学院的全体任课教师给予我的 支持和帮助。尤其感谢我的同学和朋友,为我的 论文提供很多素材,还在论文的撰写以及排版给 予我很多帮助。在此向各位帮助和指导我的老师 与朋友表示最衷心的感谢!
知识回顾 Knowledge Review
1.理论力学的发展史
• 力学是较早发展起来的学科之一。远古时代由于农业上 的需要,人们开始制造和使用一些简单的生产工具。因此人 们对机械运动,早就有了一些认识和了解。随着生产的发展, 人们对机械运动的认识逐步加深。到了十六到十七世纪,伽 里略根据实验,提出了惯性定律的内容和加速度的概念,从 而奠定了动力学的基础。在这个基础上,经过笛卡儿、惠更 斯等的努力,后来由牛顿总其大成,于一六八七年在他的名 著《自然哲学的数学原理》中,完备地提出了动力学的三个 基本定律,并从这些定律出发将动力学作了系统的叙述。从 而使力学开始形成一门独立的系统的学科。十八、十九世纪 随着虚位移原理、达朗伯原理以及著名的拉格朗日方程的提 出,经动力学普遍方程为基础的分析力学发展起来了。至此, 理论力学也随之发展成熟。
Matlab程序设计与应用第二版刘卫国课后实验答案
实验一:T1:%%第一小题z1=2*sin(85*pi/180)/(1+exp(2))%%第二小题x=[2,1+2i;—0.45,5];z2=1/2*log(x+sqrt(1+x。
^2));z2%%第三小题a=-3。
0:0。
1:3.0;z3=1/2*(exp(0.3*a)-exp(—0.3*a))。
*sin(a+0.3)+log((0。
3+a)/2)%%第四题t=0:0。
5:2.5z4=(t〉=0&t<1)。
*(t.^2)+(t〉=1&t〈2)。
*(t。
^2—1)+(t〉=2&t〈3).*(t。
^2—2*t+1)T2:A=[12,34,-4;34,7,87;3,65,7]B=[1,3,-1;2,0,3;3,—2,7]disp ('A+6*B=’);disp(A+6*B);disp('A-B+I=’);disp(A—B+eye(3));disp('A*B=’);disp(A*B);disp('A.*B=’);disp(A。
*B);disp('A^3=');disp(A^3);disp('A。
^3=’);disp(A.^3);disp(’A/B=’);disp(A/B);disp(’B\A=');disp(B\A);disp(’[A,B]=');disp([A,B]);disp(’[A([1,3],:);B^2]=');disp([A([1,3],:);B^2]);T3:z=1:25;A=reshape(z,5,5)’;B=[3,0,16;17,-6,9;0,23,-4;9,7,0;4,13,11];C=A*BD=C(3:5,2:3)T4—1:a=100:999;b=find(rem(a,21)==0);c=length(b)T4-2:a=input('请输入一个字符串:’,’s’);b=find(a〉='A’&a〈=’Z’);a(b)=[];disp(a);实验二:T1:E=eye(3),R=rand(3,2),O=zeros (2,3),S=diag([1,2]);A=[E,R;O,S]disp(’A^2=');disp(A^2);disp('[E,R+RS;O,S^2]’);B=[E,R+R*S;O,S^2]T2:H=hilb(5)P=pascal(5)Hh=det(H)Hp=det(P)Th=cond(H)Tp=cond(P)a=abs(Th—1);b=abs(Tp-1);if a>bdisp('帕萨卡矩阵P性能更好');elseif a<bdisp(’希尔伯特矩阵H性能更好’); elsedisp(’两个矩阵性能相同’);endT3:a=1:25;A=reshape(a,5,5)disp(’行列式的值:’);disp(det(A));disp('矩阵的秩:’);disp(rank(A));disp('矩阵的迹:');disp(trace(A));disp(’矩阵的范数:');disp(norm(A));T4:A=[—29,6,18;20,5,12;—8,8,5][V,D]=eig(A)T5:A=[1/2,1/3,1/4;1/3,1/4,1/5;1/4,1/5,1/6] B=[0.95,0。
matlab选修课 答案详解 实验指导书Matlab软件应用与开发
《Matlab软件应用与开发》实验指导书实验1 Matlab 操作基础及矩阵运算(一)、实验类型:验证型(二)、实验类别:基础实验(三)、每组人数:1(四)、实验要求:选修(五)、实验学时:3个学时(六)、实验目的:(1)熟悉MATLAB软件中关于矩阵运算的各种命令;(2)学会运用MATLAB软件自定义函数,并求出函数值;(3)学会在MATLAB环境下编写函数。
(七)、预备知识:线性代数中的矩阵运算;高等数学中微积分知识。
本实验所用MATLAB命令●矩阵输入格式:A=[a11 a12;a21 a22];b=初始值:步长:终值●求A的转置:A’●求A加B:A+B●求A减B:A-B●求A乘B:A*B●求A的行列式:det(A)●求A的逆:inv(A)●求A的秩: rank(A)●求函数的极限limit(.)● 求函数的导数diff(.) ● 求函数的积分 int(.) ● 求代数方程的解 solve(.) ● 求微分方程的解 dsolve(.) (八)、内容与要求: 1、 输入矩阵A,B,b;⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=521572215431352134153524852421A ,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=232556463515148355372182414512B []27252321=b2、 矩阵转置、四则运算。
C1=A ’,C2=A+B,C3=A-B,C4=A*B3、 求行列式。
D1=|A|,D2=|B|4、 求矩阵A 、B 的秩E1,E25、 求极限 11232lim +∞→⎪⎭⎫⎝⎛++x x x x6、 设x xe y =,求)5(y7、 求dx xx ⎰41ln8、求微分方程的通解232++=+'x x y y x9、自定义函数21221221)1()(100),(x x x x x f -+-=,并计算)2,1(f 。
(九)、实验操作1、>> A=[21 24 85 4;2 35 15 34;21 35 31 54;21 72 15 52] A =21 24 85 42 35 15 3421 35 31 5421 72 15 52>> B=[12 45 1 24;18 72 53 35;48 1 15 35;46 56 25 23]B =12 45 1 2418 72 53 3548 1 15 3546 56 25 23>> b=21:2:27b =21 23 25 272、>> C1=A',C2=A+B,C3=A-B,C4=A*BC1 =21 2 21 2124 35 35 7285 15 31 154 34 54 52C2 =33 69 86 2820 107 68 6969 36 46 8967 128 40 75C3 =9 -21 84 -20-16 -37 -38 -1-27 34 16 19-25 16 -10 29C4 =4948 2982 2668 4411 2938 4529 2932 2580 4854 6520 3691 4056 4660 9056 5362 4745 3、>> D1=det(A),D2=det(B)D1 =2181568D2 =-31822764、>> E1=rank(A),E2=rank(B);E1 =4E2 =45、>> syms x; %定义符号变量x>> limit(((2*x+3)/(2*x+1))^(x+1),x,inf) %求函数((2*x+3)/(2*x+1))^(x+1)当x->inf 时的极限 (inf 即英文 infinity “无穷”的缩写) inf表示正无穷大ans =exp(1)6、>> syms y x %定义符号变量>> y=x*exp(x); %定义符号函数>> diff(y,5) %计算符号函数的五阶导数ans =5*exp(x)+x*exp(x)7、>> syms x s %定义符号变量>> s=(log(x))/sqrt(x) %定义符号表达式>> int(s,1,4) %计算符号表达式在区间[1,4]上的定积分ans =8*log(2)-4 8、>> [y]=dsolve('x*Dy+y=x^2+3*x+2','x') %微分或导数的输入是用Dy 、D2y 、D3y 、…来表示y的一阶导数dx dy或y '、二阶导数x d y d 22或y ''、三阶导数x d y d 33或y '''、…。
915204-MATLAB程序设计与应用-第1章 MATLAB系统环境_习题答案
第1章 MATLAB系统环境习题1一、选择题1.最初的MA TLAB核心程序是采用()语言编写的。
AA.FORTRAN B.C C.BASIC D.PASCAL2.2016年3月发布的MA TLAB版本的编号为()。
BA.MA TLAB 2016Ra B.MA TLAB R2016aC.MATLAB 2016Rb D.MA TLAB R2016b3.下列选项中能反应MA TLAB特点的是()。
DA.算法最优B.不需要写程序C.程序执行效率高D.编程效率高4.当在命令行窗口执行命令时,如果不想立即在命令行窗口中输出结果,可以在命令后加上()。
CA.冒号(:)B.逗号(,)C.分号(;)D.百分号(%)5.如果要重新执行以前输入的命令,可以使用()。
DA.左移光标键(←)B.右移光标键(→)C.下移光标键(↓)D.上移光标键(↑)6.MA TLAB命令行窗口中提示用户输入命令的符号是()。
BA.> B.>> C.>>> D.>>>>7.plot(x,y)是一条()命令。
CA.打印B.输出C.绘图D.描点8.以下两个命令行的区别是()。
A>> x=5,y=x+10>> x=5,y=x+10;A.第一个命令行同时显示x和y的值,第二个命令行只显示x的值B.第一个命令行同时显示x和y的值,第二个命令行只显示y的值C.第一个命令行只显示x的值,第二个命令行同时显示x和y的值D.第一个命令行只显示y的值,第二个命令行同时显示x和y的值9.下列命令行中,输出结果与其他3项不同的是()。
DA.>> 10+20+... B.>> ...30 10+20+30C.>> 10+20+30%5 D.>> %10+20+3010.下列选项中,不是MATLAB帮助命令的是()。
CA.lookfor B.lookfor –all C.search D.help二、填空题1.MA TLAB一词来自的缩写。
matlab程式设计与应用课后实验答案答辩
实验三:1,x=input(' 输入 X 的值:' ;if x<0&x~=-3y=x^2+x-6elseif x>=0&x<5&x~=2&x~=3y=x^2-5*x+6else y=x^2-x-1end2, (1x=input(' 请输入成绩:'if x<0|x>100disp(' 输入错误 'x=input(' 请输入百分制成绩:' end if x>=90&x<=100disp('A'elseif x>=80&x<=89disp('B'elseif x>=70&x<=79disp('C'elseif x>=60&x<=69 disp('D'else x<60disp('E'end(2x=input(' 请输入成绩:' if x<0|x>100disp(' 成绩格式错误 ' x=input(' 请输入成绩:' endswitch fix(x/10case {9,10}disp('A'case {8}disp('B'case {7}disp('C'case {6}disp('D'otherwise disp('E'end3、 clear allx=input('请输入工号:'; y=input('请输入工作时长:'; if y>120 a=84*120+(y-120*84*0.15; disp(['您本月工资是: ',num2str(a] elseif y<60b=84*y-700;disp(['您本月工资是: ',num2str(b]elsec=84*y;disp(['您本月工资是: ',num2str(c]end4、clear alla=fix(rand(1*89+10;disp(['a=',num2str(a]b=fix(rand(1*89+10;disp(['b=',num2str(b]x=input('请输入一个四则运算符号 ','s'; if abs(x==43c=a+b;elseif abs(x==45c=a-b;elseif abs(x==42c=a*b;elseif abs(x==47c=a/b;enddisp(['a于 b 的计算结果是: ',num2str(c] 5,a=rand(5,6;n=input(' 请输入行数:'tryc=a(n,:;catchc=a(5,:;endclasterr实验四:1,n=input(' 请输入 n 的值:' a=0; b=0;for i=1:na=1/i^2;b=b+a;enddisp('PI='disp(sqrt(b*62,n=1;y=0;while (y<3y=y+1/(2*n-1;n=n+1;endn=n-2y=y-1/(2*(n+1-13,a=input('a=';b=input('b=';x0=1.0;x1=0;n=0;while (n<500&abs(x1-x0>=10^-5 x1=a/(b+x0;x0=x1;n=n+1;endnx04、clear allfor n=1:4if n==1f1=1;elseif n==2 f2=0; elseif n==3f3=1;elsea=f3-2*f2+f1;b=a-2*f3+f2;c=b-2*a+f3;d=c-2*b+a;H=[1,0,1,a,b,c,d]; for m=8:4:99a=d-2*c+b;b=a-2*d+c;c=b-2*a+d;d=c-2*b+a;H=[H,a,b,c,d]; endf100=d-2*c+b;endendmax=max(H;min=min(H;sum=sum(H;disp(['最大值是:',num2str(max] disp(['最小值是:',num2str(min] disp(['各数和是:',num2str(sum] k=0;l=0;p=0;for e=Hif e>0k=k+1;elseif e<0l=l+1;elsep=p+1;endenddisp(['正数的个数是:',num2str(k]disp(['负数的个数是: ',num2str(l]disp(['零的个数是: ',num2str(p]5,clear allp=0;l=0;H=[];for m=2:49a=m;b=m+1;c=a*b-1;for k=1:cif rem(c,k==0l=l+1;endendif l==2disp(['亲密数对是','(',num2str(a,' ,',num2str(b ,'']p=p+1;H=[H,c];endl=0;endsum=sum(H;disp(['亲密数对的个数是: ',num2str(p]disp(['亲密数对的和是: ',num2str(sum]实验五:里面的 fushu 是 01题的调用函数里面的 jiefangcheng 是 02题的调用函数里面的 sushu 是 03题的调用函数里面的 fx 是 04题的调用函数里面的 f 是 05题的调用函数SY501clear alla=input('请输入一个复数 :'; [e,l,s,c]=fushu(a;SY502clear allm1=input('请输入 m1的值:'; m2=input('请输入 m2的值:'; m3=input('请输入θ的值:'; J=jiefangcheng(m1,m2,m3;SY503clear allfor n=10:99a=sushu(n;endSY504clear ally=input('请输入一个数或矩阵:'; disp('输入的数或矩阵 x 是:' disp(yL=fx(y;SY505clear allfor n=20:10:40if n==20;[f1,f2]=f(n;a=f1;b=f2;elseif n==30;[f1,f2]=f(n;c=f1;d=f2;else[f1,f2]=f(n;e=f1;f=f2;endendy1=e/(a+c;y2=f/(b+d;disp(['(1 y=',num2str(y1] disp(['(2 y=',num2str(y2] ffunction [f1,f2]=f(nf1=n+10*log(n^2+5;x=0;for a=1:nb=a*(a+1;x=x+b;endf2=x;fushufunction [e,l,s,c]=fushu(x e=exp(x;l=log(x;s=sin(x;c=cos(x;disp(['复数 e 的指数是: ',num2str(e]disp(['复数 e 的对数是: ',num2str(l]disp(['复数 e 的正弦是: ',num2str(s]disp(['复数 e 的余弦是: ',num2str(c]fxfunction L=fx(y[m,n]=size(y; %得到矩阵 y 的行数和列数K=[];for a=1:nfor b=1:mx=sub2ind(size(y,b,a;h=1/((x-2^2+0.1+1/((x-3^4+0.0 1;K=[K,h];endendL=reshape(K,n,m;%将 K 矩阵重新排列成 m ×n 的二维矩阵disp('则 f(x='disp(L'jiefangchengfunction J=jiefangcheng(m1,m2,m3 H=[m1*cos(m3*pi/180 -m1 -sin(m3*pi/180 0m1*sin(m3*pi/180 0 cos(m3*pi/180 00 m2 -sin(m3*pi/180 00 0 -cos(m3*pi/180 1];K=[0;m1*9.8;0;m2*9.8];J=inv(H*K; disp(['方程组的解是: ',num2str(J']sushufunction a=sushu(bx=fix(b/10;y=rem(b,10;c=0;d=0;for m=1:bif rem(b,m==0c=c+1;endendfor n=1:10*y+xif rem((10*y+x,n==0d=d+1;endendif c==2&d==2a=b;disp(['绝对素数是:',num2str(a] elsea=0; %这里可以任意赋值,目的是让程序执行end实验六:1,x=[0:2*pi/100:2*pi];y=(0.5+3*sin(x./(1+x.^2.*cos( x;plot(x,y;grid;2,x=0:pi/100:2*pi;y1=x.^2;y2=cos(2.*x;y3=y1.*y2;subplot(3,4,1;bar(x,y1;subplot(3,4,5;stem(x,y1;subplot(3,4,9;stairs(x,y1;subplot(3,4,2;fill(x,y1;6,ezsurf('cos(s*cos(t', 'cos(s*s in(t', 'sin(s',[0,0.5*pi,0,1.5* pi];shading interp实验七:1,hf=figure('pointer' , 'cross' , 'pos ition' ,[50,200,500,500],'menubar ' , 'none' ,'color' ,[1,0,0],'name' , ' 窗口示例' , 'numbertitle' , 'off' , 'resize' , ' off' , 'windowbuttondownFcn' , 'disp ("left button pressed."'; 2,hf=figure('pointer' , 'cross' , 'pos ition' ,[50,200,500,500],'menubar ' , 'none' ,'color' ,[1,0,0],'name' , ' 窗口示例' , 'numbertitle' , 'off' , 'resize' , ' off' , 'windowbuttondownFcn' , 'disp ("left button pressed."'; x=0:pi/100:2*pi;y=x.^2.*exp(2*x;h=line(x,y;axis([0,2*pi,0,10]text(1,5,'\leftarrowy=x^2*exp(2*x \pi\div', 'color' , 'b' , 'fontsize' ,20, 'rotation' ,30 set(h,'linestyle' , ':', 'color' , 'g ' , 'linewidth' ,5; 3,x=0:pi/100:100;[t,x]=meshgrid(x;y=10*exp(-0.01*x*sin(2000*pi*t-0.2*t+pi; hs=surface(t,x,y; 实验八:实验 8— 1clear all;n=0;A=rand(1,30000;meanA=mean(A;stdA=std(A,1,2;maxA=max(A;minA=min(A;for x=Aif x>0.5n=n+1;else continue;endendp=n/30000;disp(['均值 =' ,num2str(meanA]; disp(['标准差 =',num2str(stdA]; disp(['最大值max=',num2str(maxA];disp(['最小值min=',num2str(minA];disp([ '百分比 P=',num2str(p];实验九 :2,(1.x=0:pi/100:2*pi;y=sqrt(cos(x.^2+4*sin(2*x.^2+1 ;trapz(x,yg=inline('sqrt(cos(x.^2+4*sin(2 *x.^2+1';i=quadl(g,0,2*pij=quad(g,0,2*piformat short2,(2.x=0:0.001:1;y=log(1+x./(1+x.^2;trapz(x,yg=inline('log(1+x./(1+x.^2';i=quadl(g,0,1 j=quad(g,0,1 format short 3, a=[6,5,-2,5;9,-1,4,-1;3,4,2,-2;3 ,-9,0,2]; b=[-4;13;1;11]; x1=a\b [l,u]=lu(a; x2=u\(l\b [q,r]=qr(a; x3=r\(q\b format short 5,function f=fz(x; f=3*x+sin(x-exp(x; ,(1 6,(1): f=inline('(x^3+cos(x+x*log(x/ exp(x'; fminbnd(f,0,1 ):function f=fxy(u (2): x=u(1; y=u(2; f=2*x.^3+4*x.*y.^2-10*x.*y+y.^2; 实验十: 1, x=sym('6'; y=sym('5'; z=(x+1/(sqrt(3+x-sqrt(y eval(z 2, syms x y z=x^4-y^4 factor(z factor(sym('5135' 解 4, p1=sym('[0,1,0;1,0,0;0,0,1]'p2=sym('[1,0,0;0,1,0;1,0,1]' A=sym('[a,b,c;d,e,f;g,h,i]' B=p1*p2*A C=inv(B B.*C-C.*B triu(B tril(B %逆矩阵 %验证逆矩阵的正确性 %上三角阵 %下三角阵 %5135整数分3, syms x y m=sin(x*cos(y-cos(x*sin(y n=(4*x^2+8*x+3/(2*x+1 simple(m %显示过程simplify(m simplify(n %最优 diag(B,1 %主对角线 det(B 5, syms x a t ;A=(x*(exp(sin(x+1-2*(exp(tan( x-1/sin(x^3 B=(sqrt(pi-sqrt(acos(x/sqrt( x+1 C=(1-cos(2*x/x D=sym('[a^x,t^3;t*cos(x,log(x] ' E=det(D F=(x^2-2*x*exp(-x^2-y^2-x*ya=limit(A b=limit(A,0 c=limit(A,x,0 d=limit(B,x,-1,'right' e=diff(C %一阶导数f=diff(C,2 %二阶导数 g=diff(E,x %对x求偏导 h=diff(E,t,2 %对t求偏二阶导i=diff(diff(E,x,t %d(de/dx/dt j=-diff(F,x/diff(F,y%对y求x的一阶偏导数k=diff(diff(F,x,y%对f求二阶偏导数 x=0;y=1; eval(j eval(k 6. x=sym('x';f=1/(1+x.^4+x.^8; int(ff=1/asin(x.^2.*sqrt(1-x.^2; int(f f=(x.^2+1/(x.^4+1; int(f,x,0,inff=exp(x.*(1+exp(x.^2; int(f,x,0,log(2。
MATLAB程序设计与应用课后实验答案
A-B+eye(3)
A*B
A.*B
A^3
A.^3
A/B
B\A
[A,B]
[A([1,3],:);B^2]
运算结果:
A=[12 34 -4;34 7 87;3 65 7];B=[1 3 -1;2 0 3;3 -2 7];
A+6.*B
A-B+eye(3)
A*B
A.*B
A^3
A.^3
A/B
B\A
0 0 0 0
ans =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
由ans,所以
2. 产生5阶希尔伯特矩阵H和5阶帕斯卡矩阵P,且求其行列式的值Hh和Hp以及它们的条件数Th和Tp,判断哪个矩阵性能更好。为什么?
解:M文件如下:
输出结果:
H =
P =
1 1 1 1 1
Columns 57 through 60
Column 61
z4 =
0 0
2. 已知:
求下列表达式的值:
(1) A+6*B和A-B+I(其中I为单位矩阵)
(2) A*B和A.*B
(3) A^3和A.^3
(4) A/B及B\A
(5) [A,B]和[A([1,3],:);B^2]
解:
M文件:
A=[12 34 -4;34 7 87;3 65 7];B=[1 3 -1;2 0 3;3 -2 7];
实验四 循环结构程序设计
一、实验目的
1. 掌握利用for语句实现循环结构的方法。
2. 掌握利用while语句实现循环结构的方法。
MATLAB程序设计与应用(第二版)课后实验答案
Matlab课后实验题答案实验一 MATLAB运算基础1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。
(1)0 122sin851ze =+(2)21ln(2z x=,其中2120.455ix+⎡⎤=⎢⎥-⎣⎦(3)0.30.330.3sin(0.3)ln, 3.0, 2.9,,2.9,3.0 22a ae e az a a--+=++=--(4)2242011122123t tz t tt t t⎧≤<⎪=-≤<⎨⎪-+≤<⎩,其中t=0:0.5:2.52. 已知:1234413134787,2033657327A B --⎡⎤⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦求下列表达式的值:(1) A+6*B 和A —B+I(其中I 为单位矩阵) (2) A*B 和A.*B (3) A^3和A.^3 (4) A/B 及B\A(5) [A,B ]和[A ([1,3],:);B^2] 解:3. 设有矩阵A 和B123453166789101769,111213141502341617181920970212223242541311A B ⎡⎤⎡⎤⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥⎢⎥==-⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦(1) 求它们的乘积C 。
(2) 将矩阵C 的右下角3×2子矩阵赋给D 。
(3) 查看MATLAB 工作空间的使用情况。
4. 完成下列操作:(1) 求[100,999]之间能被21整除的数的个数。
(2) 建立一个字符串向量,删除其中的大写字母。
解:(1) 结果:(2).建立一个字符串向量 例如: ch='ABC123d4e56Fg9';则要求结果是:实验二 MATLAB 矩阵分析与处理1。
设有分块矩阵33322322E R A O S ⨯⨯⨯⨯⎡⎤=⎢⎥⎣⎦,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证22E R RS A OS +⎡⎤=⎢⎥⎣⎦。
MATLAB程序设计知到章节答案智慧树2023年广西科技大学
MATLAB程序设计知到章节测试答案智慧树2023年最新广西科技大学第一章测试1.当在命令行窗口执行命令时,如果不想立即在命令行窗口中输出结果,可以在命令后加上()。
参考答案:分号(;)2.MATLAB命令行窗口中提示用户输入命令的符号是()。
参考答案:>> ;3.fix(264/100)+mod(264,10)*10的值是()。
参考答案:424.下列可作为MATLAB合法变量名的是()。
参考答案:xyz_2a。
5.在命令行窗口输入下列命令后,x的值是()。
>> clear>> x=i*j参考答案:-1;6.建立矩阵时,不同行的元素之间用()分隔。
参考答案:分号;7.输入字符串时,要用()将字符序列括起来。
参考答案:' ';8.最初的MATLAB核心程序是采用()语言编写的。
参考答案:FORTRAN;9.下列选项中能反应MATLAB特点的是()。
参考答案:编程效率高。
10.如果要重新执行以前输入的命令,可以使用()。
参考答案:上移光标键(↑)。
11.plot(x,y)是一条()命令。
参考答案:绘图;12.以下两个命令行的区别是()。
>> x=5,y=x+10>> x=5,y=x+10;参考答案:第一个命令行同时显示x和y的值,第二个命令行只显示x的值;13.下列选项中,不是MATLAB帮助命令的是()。
参考答案:search;14.下列数值数据表示中错误的是()。
参考答案:2e;15.下列语句中错误的是()。
参考答案:x=y=3;16.已知s='显示"hello"',则s的元素个数是()。
参考答案:9;17.建立矩阵时,同一行的元素之间用()分隔。
参考答案:空格;;逗号;18.在当前文件夹和搜索路径中都有fpp.m文件,那么在命令行窗口输入fpp时,下列说法错误的是()。
参考答案:先执行当前文件夹的fpp.m文件,再执行搜索路径中的fpp.m文件;;先执行搜索路径中的fpp.m文件,再执行当前文件夹的fpp.m文件;;执行搜索路径中的fpp.m文件;19.内存变量文件是二进制格式文件,扩展名为.mat。
实验4答案 Matlab程序设计1
实验4 Matlab 程序设计1实验目的:1、 掌握建立和执行M 文件的方法;2、 掌握实现选择结构的方法;3、 掌握实现循环结构的方法。
实验内容:1. 从键盘输入一个4位整数,按如下规则加密后输出。
加密规则:每位数字都加上7,然后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。
a = input('请输入一个四位整数:');a1 = fix(a/1000);a2 = rem(fix(a/100),10);a3 = rem(rem(fix(a/10),100),10);a4 = rem(a,10);a1 = rem(a1+7,10)a2 = rem(a2+7,10)a3 = rem(a3+7,10)a4 = rem(a4+7,10)b1 = a1;a1 = a3;a3 = b1;b2 = a2;a2 = a4;a4 = b2;b = a1*1000+a2*100+a3*10+a42. 求分段函数的值。
,x x x x y x x x x x x x ⎧+- <≠-⎪=-+ ≤<≠≠⎨⎪-- ⎩2226035605231且且及其他用if 语句实现,分别输出x=-5,-3,0,1,2,2.5,3,5时的y 值。
x = input(请输入X 的值:');if x <0 & x~=-3y = x.*x +x-6;elseif x>=0 & x<5 & x~=2 & x~=3y = x.*x-5*x+6;elsey = x.*x-x-1;endy3.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E,其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
要求:(1)分别用if语句和swich语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
MATLAB程序设计与应用第二版课后题答案 (1)
第二章3.设矩阵A为A=[24 23 9 21 6;65 74 24 11 21;34 5 98 75 21;8 42 42 53 121;43 21 45 64 21];(1)B=A(2:5,1:2:5)B =65 24 2134 98 218 42 12143 45 21(2)A(7)=[]A =24 65 34 8 43 23 5 42 21 9 24 98 42 45 21 11 75 53 64 6 21 21 121 21(3)A+30(4)size(A);ndims(A)(5)题目有误(6)reshape(x,3,4)(7)abs(x)(8)char(x)4. L1 =0 0 0 0 1 0 0 0 0L2 =1 1 1 1 1 0 0 0 0L3 =0 0 0 1 1 1 0 0 0L4 =4 5 65.(1)B=A(1:3,:)C=A(:,1:2)D=A(2:4,3:4)E=B*CB =23.0000 10.0000 -0.7780 041.0000 -45.0000 65.0000 5.000032.0000 5.0000 0 32.0000C =23.0000 10.000041.0000 -45.000032.0000 5.00006.0000 -9.5400D =65.0000 5.00000 32.000054.0000 3.1400E =1.0e+003 *0.9141 -0.22391.20802.71231.1330 -0.2103(2)E<Dans =0 10 00 1E&Dans =1 10 11 1E|Dans =1 11 11 1~D|~Eans =0 01 00 0find(A>=10&A<25)ans =156.all(A)ans =any(A)ans =1isnan(A)ans =0 1 0 0 0 0 0isinf(A)ans =0 0 1 1 0 0 0isfinite(A)ans =1 0 0 0 1 1 17.A(1).x1=’学号’;A(1).x2=’姓名’;A(1).x3=’专业’;A(1).x4.x41=’成绩1’;………. A(2).x1=’学号’;A(2).x2=’姓名’;A(2).x3=’专业’;A(2).x4.x41=’成绩1’;………. A(3).x1=’学号’;A(3).x2=’姓名’;A(3).x3=’专业’;A(3).x4.x41=’成绩1’;………. A(4).x1=’学号’;A(4).x2=’姓名’;A(4).x3=’专业’;A(4).x4.x41=’成绩1’;………. A(5).x1=’学号’;A(5).x2=’姓名’;A(5).x3=’专业’;A(5).x4.x41=’成绩1’;……….8.(1)size(B)ans =2 2ndims(B)ans =2(2)B(2)ans =[3x3 doubleB(4)ans ={3x3 cell}(3)B(3)=[]B =[1] [3x3 double] {3x3 cell}B{3}=[]B =[1] [3x3 double] []第三章1.(1)A=eye(3)(2) A=100+100*rand(5,6)(3)A=1+sqrt(0.2)*randn(10,50)(4)B=ones(size(A))(5)A+30*eye(size(A))(6)B=diag(diag(A))2.B=rot90(A)C=rot90(A,-1)3.B=inv(A) ;A的逆矩阵C=det(A) ;A的行列式的值D=A*BE=B*AD=E 因此A与A-1是互逆的。
matlab程序设计教程第三版课后答案
matlab程序设计教程第三版课后答案在 MATLAB中,对 MATLAB编程是用什么来编写程序的?下面分别介绍下 MATLAB程序设计教程中关于使用什么语言编写程序:由于使用较多,本教程会在 MATLAB基础上进行改进和优化,并以此为基础将问题分类为四个不同层次:(1)定义问题分类;(2)提出问题间关系;(3)分析问题和解决问题。
本教程不限制解决问题时是否使用或修改现有问题而只是要求解决问题时使用或修改现有问题而不适用本教程中各层次问题并加入了分析问题和解决问题的内容和方法。
一、定义问题分类定义问题分类的目的是为了将不同层次的问题区分开来,以便更加准确地进行相应的程序设计。
解决问题应根据问题所涉及的对象及其相互关系来进行分类,通常可以分为三类:计算类、求解类。
定义问题分类时应根据问题的重要性、目标实现过程中有无对相关问题分类的基础知识等进行考虑,以便对问题分类更具有针对性。
在 MATLAB中定义问题分类时一般按可划分的对象分类,也可按可处理的对象分类三大类,如图2所示。
图2中的问题分类如图3所示,其中 A为问题分类中的问题, B为已完成的问题, C为分析问题, D为解决问题。
二、提出问题间关系问题的内部结构由程序代码构成,因此,问题间的问题关系是编程人员必须掌握的知识,为了便于操作,它们之间存在着复杂的相互关系。
当一个问题被解决后,下一个问题的解决还需要继续解决下一个问题。
如果一个问题不被解决又要继续解决另外一个问题,或者一个问题已经解决了,而下一个问题却没有得到解决,那么这类问题就被称为“已知问题”或者“未知问题”。
由于已知问题都是由已知的数学问题所构成,所以这种关系叫已知问题与未知问题之间的关系(见图3)。
当一个问题与其他问题处于不同的数学问题之间时,所处的数学问题就会存在一定程度的矛盾。
如果数学问题不能得到解决,或者解决数学问题的算法设计出现错误,那么这个矛盾就会不断激化,最终将使整个问题变得越来越复杂。
MATLAB 程式的设计入门篇应用程式介面
dll(MATLAB7.1前),mexwin64(MATLAB 7.1或更新)
mexmac mexmaci
MATLAB 程式設計進階篇:應用程式介面
3-3 MATLAB的資料結構 及對應API
MATLAB 變數的資料結構
Borland C 等
MATLAB 程式設計進階篇:應用程式介面
開始前置測試 (V)
完成選擇 C 編譯器的程序,可以測試 C 程式編譯 MATLAB 有一現成的 C 程式碼 yprime.c,其位置在
{MATLAB root}\extern\examples\mex\yprime.c 測試之前,須將此檔案拷貝至目前目錄,才可進行測試
mexPrintf(在 MATLAB 印出訊息)
MATLAB 程式設計進階篇:應用程式介面
MATLAB 提供的API函數 - mat
mat 為字頭的 API 函數
對 MAT 檔案的讀寫或處理
matGetArray(從 MAT 檔案讀取 mxArray 陣列) matDeleteArray(從 MAT 檔案移除 mxArray 陣列)
Microsoft Windows (32-bit)
Microsoft Windows (64-bit)
Macintosh (PPC) Macintosh (Intel)
MEX 檔案的副檔名 mex4 mexhp7 mexds mexsg mexsg64 mexrs6 mexglx mexa64 mexs64
MATLAB 程式設計進階篇:應用程式介面
開始前置測試 (VI)
在 MATLAB 指令視窗,輸入下列敘述來編譯此 C 程式
Matlab程序设计方案及应用实验讲义
封面作者:PanHongliang仅供个人学习Matlab程序设计及应用实验讲义自编电子科学与工程系2013.02 实验一 MATLAB环境与命令窗口1、实验目的1)熟悉MATLAB的操作环境及基本操作方法;2)掌握MATLAB的搜索路径及其设置方法;3)熟悉MATLAB帮助信息的查阅方法;2、实验主要仪器设备和材料计算机PC一台 2010a软件3、实验内容和原理1、先建立自己的工作目录,再将自己的工作目录设置到MATLAB的搜索路径下,再实验用help命令能否查询到自己的工作目录。
2、在MATLAB环境下验证下面几个例子,并总结MATLAB的主要优点。
1)绘制正弦曲线和余弦曲线2)求方程的全部根3)求积分4)求解线性方程组3、利用MATLAB的帮助功能分别查询inv 、plot、 max 、round等函数的功能与用法4、完成下列操作:1)在MATLAB命令窗口输入以下命令:x=0:pi/10:2*pi。
y=sin(x)。
2)在工作空间窗口选择变量y,再在工作空间窗口选择绘图菜单命令或在工具栏中单击绘图命令按钮,绘制变量的图形,并分析图形的含义。
5、访问MathsWorks公司的主页,查询有关MATLAB的产品信息。
思考与练习1、如何启动和退出MATLAB的集成环境?2、简述MATLAB的主要功能。
3、如果一个MATLAB命令包含的字符很多,需要分成多行输入,该如何处理?4、help命令和look for命令有何区别?5、在MATLAB环境下,建立一个变量fac,同时又在当前目录下建立了一个M 文件fac.m,如果需要运行fac.m文件,该如何处理?实验二数值数组的创建与运算1、实验目的1)掌握MATLAB数据对象的特点以及数据的运算规则。
2)掌握MATLAB中建立矩阵的方法以及矩阵处理的方法。
3)掌握MATLAB分析的方法。
2、实验主要仪器设备和材料计算机PC一台 2010a软件3、实验内容和原理1、求下列表达式的值:1)2),其中,,,。
MATLAB 程式设计入门篇M档案答辩
對所給的關鍵字和搜尋路徑上所有函數的 「H1 輔助說明」一一比對
>> lookfor 'help line' FUNC2 A simple function with a single help line.
MATLAB 程式設計入門篇:M檔案
底稿的優缺點
優點
適用於簡單但重複性高的程式碼 產生的變數保留在基本工作空間中
變數檢視及除錯容易
缺點
不支援輸入及輸出引數(Input/Output Arguments)
產生的變數保留在基本工作空間中
變數互相覆蓋而造成程式錯誤
ห้องสมุดไป่ตู้ATLAB 程式設計入門篇:M檔案
M 檔案編輯器 (I)
MATLAB 程式設計入門篇:M檔案
函數命名的限制
函數名稱和變數名稱有相同的限制
只接受前 31 個字母(MATLAB 5.x)或前 63 個字母(MATLAB 6.x 和 7.x)
以英文字母作為開頭
函數名稱和檔案名稱不同
仍可依檔案名稱呼叫檔案 函數名稱將被忽略
MATLAB 程式設計入門篇:M檔案
MATLAB 程式設計入門篇 M檔案
張智星 清大資工系 補充內容:方煒 台大生機系 小幅修改:吳俊仲 長庚機械系
MATLAB 程式設計入門篇:M檔案
15-1 底稿
底稿(Script)
副檔名為m的檔案,包含 MATLAB各種指令 在MATLAB指令視窗直接輸入檔名,即逐一
執行檔案內的指令
MATLAB 程式設計入門篇:M檔案
函數顯示及內容
func1.m 可算出一向量的平均值 用 type 指令顯示其內容:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
M ATLAB程式设计与应用曾剑锋1-1、基本运算与函数在M ATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之后,并按入Enter键即可。
例如:>>(5*2+1.3-0.8)*10/25ans =4.2000M ATLAB会将运算结果直接存入一变数ans,代表MATLAB运算后的答案(Answer),并显示其数值于萤幕上。
(为简便起见,在下述各例中,我们不再印出MATLAB 的提示号。
)我们也可将上述运算式的结果设定给另一个变数x:x = (5*2+1.3-0.8)*10^2/25x =42此时M ATLAB会直接显示x的值。
由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。
若不想让MATLAB每次都显示运算结果,只需在运算式最后加上分号(;)即可,如下例:y = sin(10)*exp(-0.3*4^2);若要显示变数y的值,直接键入y即可:>>yy =-0.0045在上例中,sin是正弦函数,exp是指数函数,这些都是MATLAB常用到的数学函数。
下表即为MATLAB常用的基本数学函数及三角函数::自然指数的指数为底的对数,即自然对数或为底的对数变数也可用来存放向量或矩阵,并进行各种运算,如下例的列向量(Row vector)运算:x = [1 3 5 2];y = 2*x+1y =3 7 11 5我们可以随意更改、增加或删除向量的元素:y(3) = 2 % 更改第三个元素y =3 7 2 5y(6) = 10 % 加入第六个元素y =3 7 2 5 0 10y(4) = [] % 删除第四个元素,y =3 7 2 0 10在上例中,MATLAB会忽略所有在百分比符号(%)之后的文字,因此百分比之后的文字均可视为程式的注解(Comments)。
MATLAB亦可取出向量的一个元素或一部份来做运算:x(2)*3+y(4) % 取出x的第二个元素和y的第四个元素来做运算ans =9y(2:4)-1 % 取出y的第二至第四个元素来做运算ans =6 1 -1在上例中,2:4代表一个由2、3、4组成的向量,同样的方法可用于产生公差为1的等差数列:x = 7:16x =7 8 9 10 11 12 13 14 15 16若不希望公差为1,则可将所需公差直接至于4与13之间:x = 7:3:16 % 公差为3的等差数列x =7 10 13 16事实上,我们可利用linspace来产生任意的等差数列:x = linspace(4, 10, 6) % 等差数列:首项为4,末项为10,项数为6x =4.00005.20006.40007.60008.8000 10.0000若对MATLAB函数用法有疑问,可随时使用help来寻求线上支援(on-line help):help linspaceLINSPACE Linearly spaced vector.LINSPACE(x1, x2) generates a row vector of 100 linearlyequally spaced points between x1 and x2.LINSPACE(x1, x2, N) generates N points between x1 and x2.See also LOGSPACE, :.将列向量转置(Transpose)后,即可得到行向量(Column vector):z = x'z =4.00005.20006.40007.60008.800010.0000不论是行向量或列向量,我们均可用相同的函数找出其元素个数、最大值、最小值等:length(z) % z的元素个数ans =6max(z) % z的最大值ans =10min(z) % z的最小值ans =4若要输入矩阵,则必须在每一列结尾加上分号(;),如下例:A = [1 2 3 4; 5 6 7 8; 9 10 11 12];AA =1 2 3 45 6 7 89 10 11 12同样地,我们可以对矩阵进行各种处理:A(2,3) = 5 % 改变位于第二列,第三行的元素值A =1 2 3 45 6 5 89 10 11 12B = A(2,1:3) % 取出部份矩阵BB =5 6 5A = [A B'] % 将B转置后以行向量并入AA =1 2 3 4 55 6 5 8 69 10 11 12 5A(:, 2) = [] % 删除第二行(:代表所有列)A =1 3 4 55 5 8 69 11 12 5A = [A; 4 3 2 1] % 加入第四列A =1 3 4 55 5 8 69 11 12 54 3 2 1A([1 4], :) = [] % 删除第一和第四列(:代表所有行)A =5 5 8 69 11 12 5这几种矩阵处理的方式可以相互叠代运用,产生各种意想不到的效果,就看各位的巧思和创意。
此外,若要重新安排矩阵的形状,可用reshape命令:B = reshape(A, 4, 2) % 4是新矩阵的列数,2是新矩阵的行数B =5 89 125 611 5MATLAB可在同时执行数个命令,只要以逗号或分号将命令隔开:x = sin(pi/3); y = x^2; z = y*10,z =7.5000若一个数学运算是太长,可用三个句点将其延伸到下一行:z = 10*sin(pi/3)* ...sin(pi/3);若要检视现存于工作空间(Workspace)的变数,可键入who:whoYour variables are:testfile x这些是由使用者定义的变数。
若要知道这些变数的详细资料,可键入:whosName Size Bytes ClassA 2x4 64 double arrayB 4x2 64 double arrayans 1x1 8 double arrayx 1x1 8 double arrayy 1x1 8 double arrayz 1x1 8 double arrayGrand total is 20 elements using 160 bytes使用clear可以删除工作空间的变数:clear AA??? Undefined function or variable 'A'.另外MATLAB有些永久常数(Permanent constants),虽然在工作空间中看不到,但使用者可直接取用,例如:pians =3.1416下表即为MATLAB常用到的永久常数。
)1-2、重复命令最简单的重复命令是for圈(for-loop),其基本形式为:for 变数 = 矩阵;运算式;end其中变数的值会被依次设定为矩阵的每一行,来执行介于for和end之间的运算式。
因此,若无意外情况,运算式执行的次数会等于矩阵的行数。
举例来说,下列命令会产生一个长度为6的调和数列(Harmonic sequence):x = zeros(1,6); % x是一个16的零矩阵for i = 1:6,x(i) = 1/i;end在上例中,矩阵x最初是一个16的零矩阵,在for圈中,变数i的值依次是1到6,因此矩阵x的第i个元素的值依次被设为1/i。
我们可用分数来显示此数列:format rat % 使用分数来表示数值disp(x)1 1/2 1/3 1/4 1/5 1/6for圈可以是多层的,下例产生一个16的Hilbert矩阵h,其中位于第i列、第j行的元素为:h = zeros(6);for i = 1:6,for j = 1:6,h(i,j) = 1/(i+j-1);endend1 1/2 1/3 1/4 1/5 1/61/2 1/3 1/4 1/5 1/6 1/71/3 1/4 1/5 1/6 1/7 1/81/4 1/5 1/6 1/7 1/8 1/91/5 1/6 1/7 1/8 1/9 1/101/6 1/7 1/8 1/9 1/10 1/11在下例中,for圈列出先前产生的Hilbert矩阵的每一行的平方和:for i = h,disp(norm(i)^2); % 印出每一行的平方和end1299/871282/551650/2343524/2933559/4431831/8801在上例中,每一次i的值就是矩阵h的一行,所以写出来的命令特别简洁。
令一个常用到的重复命令是while圈,其基本形式为:while 条件式;end也就是说,只要条件示成立,运算式就会一再被执行。
例如先前产生调和数列的例子,我们可用while圈改写如下:x = zeros(1,6); % x是一个16的零矩阵i = 1;while i <= 6,x(i) = 1/i;i = i+1;endformat short1-3、逻辑命令最简单的逻辑命令是if, ..., end,其基本形式为:if 条件式;运算式;endif rand(1,1) > 0.5,disp('Given random number is greater than 0.5.');endGiven random number is greater than 0.5.1-4、集合多个命令于一个M档案若要一次执行大量的MATLAB命令,可将这些命令存放於一个副档名为m的档案,并在MATLAB提示号下键入此档案的主档名即可。
此种包含MATLAB命令的档案都以m为副档名,因此通称M档案(M-files)。
例如一个名为test.m的M档案,包含一连串的MATLAB命令,那麽只要直接键入test,即可执行其所包含的命令:pwd % 显示现在的目录ans =D:\MATLAB5\bincd c:\data\mlbook % 进入test.m所在的目录type test.m % 显示test.m的内容% This is my first test M-file.% Roger Jang, March 3, 1997fprintf('Start of test.m!\n');for i = 1:3,fprintf('i = %d ---> i^3 = %d\n', i, i^3);endfprintf('End of test.m!\n');test % 执行test.mStart of test.m!i = 1 ---> i^3 = 1i = 2 ---> i^3 = 8i = 3 ---> i^3 = 27End of test.m!严格来说,M档案可再细分为命令集(Scripts)及函数(Functions)。