1、matlab实验内容答案解析实验报告说明:matlab课程实验需撰写8个实验报告,每个实验报告内容写每次实验内容中标号呈黑体大号字显示的题目。第一次实验内容:实验一 MATLAB运算基础一、实验目的1.熟悉启动和退出MATLAB的方法。2.熟悉MATLAB命令窗口的组成。3.掌握建立矩阵的方法。4.掌握MATLAB各种表达式的书写规则以及常用函数的使用。二、实验内容1.先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。(1)(2),其中(3)提示:利用冒号表达式生成a向量,求各点的函数值时用点乘运算。(4) ,其中t0:0.5:2.5提示:用逻辑表达式求分段函数值。2.
2、已知 ,求下列表达式的值:(1)A+6=B和A-B+I(其中I为单位矩阵)。(2)A*B和A.*B 。(3)A3和A.3 。(4)A/B和BA 。(5)A,B和A(1,3,;);B2 。3.设有矩阵A和B, (1)求它们的乘积C 。(2)将矩阵C的右下角32子矩阵赋给D(3)查看MATLAB工作空间使用情况。4.完成下列操作:(1)求100,999之间能被21整除的数的个数。提示:先利用冒号表达式,再利用find和length函数。(2)建立一个字符串向量,删除其中的大写字母。提示:利用find函数和空矩阵。第二次实验内容:实验三 选择结构程序设计一、实验目的1.掌握建立和执行M文件的方法。2
3、.掌握利用if语句实现选择结构的方法。3.掌握利用switch语句实现多分支选择结构的方法。4.掌握try语句的使用。二 、实验内容1.求下列分段函数的值。 要求:(1)用if语句实现,分别输出x= -5.0, -3.0, 1.0, 2.0, 2.5, 3.0, 5.0 时的y值。 提示:x的值从键盘输入,可以是向量。(2)仿照实验一第1题第4小题,用逻辑表达式实现,从而体会MATLAB逻辑表达式的一种应用。clear x=input(input the value of x :); if x=0 & x10 & x=2 &x=3 y=x*x-5*x+6; else y=x*x-x-1; en
4、d y2输入一个百分制成绩,要求输出成绩等级A,B,C,D,E 。其中90100分为A,8089分为B,7079分为C,6069分为D,60分以下为E。要求:(1)用switch语句实现。(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出错误信息。if语句实现:clearx=input(input score:);if x0 disp(Sorry,The fail score!)elseif x60 disp(E)elseif x70 disp(D)elseif x80 disp(C)elseif x90 disp(B)elseif x=100 disp(A)else disp(
5、Sorry,The fail score!)endswitch语句实现:clearscore=input(input the score:);switch scorecase num2cell(0:59)disp(E)case num2cell(60:69)disp(D)case num2cell(70:79)disp(C)case num2cell(80:89)disp(B)case num2cell(90:100)disp(A)otherwisedisp(Sorry!Its the fail score,input the score again)end3. 建立56矩阵,要求输出矩阵第n
6、行元素。当n值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。clearA=1,1,1,1,1,1;2,2,2,2,2,2;3,3,3,3,3,3;4,4,4,4,4,4;5,5,5,5,5,5;n=input(请输入输出元素行数n=);tryB=A(n,:);catchB=A(5,:);lasterrendB实验四 循环结构程序设计一、实验目的1.掌握利用for语句实现循环结构的方法。2.掌握利用while语句实现循环结构的方法。3.熟悉利用向量运算来代替循环操作的方法。二、实验内容1.根据,求的近似值。当n分别取100、1 000、10 000时,结果是多少?要求:分别用循
7、环结构和向量运算(使用sum函数)来实现。应用sum的方法:clearn=100;i=1:n;y=1./i.2;y1=sum(y);pai=sqrt(6*y1)第二种方法:cleary=0;n=input(输入数据n:)for i=1:ny=y+1/(i*i);endpai=sqrt(6*y)2.根据. ,求:(1)y=3break;endi=i+1;endi3. 已知 求中:(1)最大值、最小值、各数之和。(2)正数、零、负数的个数。-f=1,0,1;for n=4:100 f(n)=f(n-1)-2*f(n-2)+f(n-3);endk=length(find(f0)k=length(fi
8、nd(f=0)-4若两个连续自然数的乘积减1是素数,则称这两个连续自然数是亲密数对,该素数是亲密素数。求2,50区间内:(1)亲密数对的对数;(2)与上述亲密数对对应的所有亲密素数之和。实验五 函数与文件一、实验目的1.掌握定义和调用,MATLAB函数的方法。2.掌握MATLAB文件的基本操作。二、实验内容1. 定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件。function a,b,c,d=susb(x)a=exp(x);b=sin(x);c=log10(x);d=cos(x);调用:x=1+2ia,b,c,d=susb(x)2. 一个自然数是素数,且它的
9、各位数字位置经过任意对换后仍为素数,则称是绝对素数。例如13是绝对素数。试求所有两位的绝对素数。要求:定义一个判断素数的函数文件。functionq=apnum(p); % 以下为函数文件,需单独保存for i=2:9 n=find(rem(p,i)=0); % 找出能被i整除的p的位置 p(n)=; % 消去能被i整除的pendq=10*rem(p,10)+fix(p/10); % p的个位和十位调换,调换后为qfor j=2:9 m=find(rem(q,j)=0); % 找出能被j整除的q的位置 q(m)=; % 消去能被j整除的qend 调用:clear allp=10:99;q=ap
10、num(p)3.已知(1)当时,求y的值。(2)当时,求y的值。第三次实验内容:实验六 高层绘图操作一、实验目的1.掌握绘制二维图形的常用函数。2.掌握绘制三维图形的常用函数。二、实验内容1. 已知完成下列操作:(1)在同一坐标系下用不同的颜色和线型绘制三条曲线。(2)以子图形式绘制3条曲线。(3)分别用条图形、阶梯图、杆图和填充图绘制3条曲线。2. 分别用plot和fplot函数绘制函数的曲线,分析两曲线的差别。3. 绘制函数的曲面图和等高线。 已知 提示:绘制三维曲面图,首先要选定一平面区域并在该区域产生网络坐标矩阵。在做本题前,先分析并上机验证下列命令的执行结果,从中体会产生网络坐标矩阵
11、的方法。 x,y=meshgrid(-1:0.5:2,1:5)3.已知6x30,15y0.25部分。x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y).*cos(x); I,J=find(z0.25); for ii=1:length(I) z(I(ii),J(ii)=NaN; end surf(x,y,z);实验七 低层绘图操作一、实验目的1.掌握图形对象属性的基本操作。2.掌握利用图形对象进行绘图操作的方法。二、实验内容1. 建立一个图形窗口,使之背景颜色为红色,并在窗口上保留原有的菜单项,而且在按下鼠标器的左键之后显示出Left Button Pressed字样。
12、hf=figure(Color,1,0,0,WindowButtonDownFcn,disp(Left Button Pressed.);2. 先利用缺省属性绘制曲线,然后通过图形句柄操作来改变曲线的颜色、线型和线宽,并利用文字对象给曲线添加文字标注。实验十二 菜单设计一、实验目的1. 了解图形用户界面的特点。2. 掌握菜单设计的方法。3.掌握对话框设计的方法。二、实验内容1. 设计菜单。菜单条仅有File菜单项,File下有New、Plot和Exit等3个选项。选择New时利用Edit命令建立一个新的M文件。选择Plot将显示下一级菜单,其中有Sine Wave和Cosine Wave两个子
13、菜单项,且若选择了其中的Sine Wave子菜单项,则将打开一个新的图形窗口并显示出正弦曲线。若选择了其中的Cosine Wave 子菜单项,则将打开一个新的图形窗口并显示出余弦曲线。如果选择Exit菜单项,则将关闭窗口并推出用户系统回到MATLAB命令窗口。2. 为图形窗口建立快捷菜单,用以控制窗口的背景颜色和大小。4.设计一个对话框,其中有一个编辑框和按钮,当单击按钮时,使编辑框的内容加5。第四次实验内容:实验二 矩阵分析一、实验目的1.掌握生成特殊矩阵的方法。2.掌握矩阵分析的方法。二、实验内容1. 产生5阶希尔伯特矩阵H和5阶帕斯卡矩阵P,且求其行列式的值Hh和Hp以及它们的条件数Th
14、和Tp,判断哪个矩阵性能更好,为什么?H=hilb(5) %产生55阶希尔波特矩阵P=pascal(5) %产生55阶帕斯卡矩阵Hh=det(H); %计算行列式的值Ph=det(P); Th=cond(H); %计算条件数Tp=cond(P);HhPhThTp2. 建立一个55矩阵,求它的行列式值、迹、秩和范数。A=1 2 3 4 5;2 3 4 5 6;3 4 5 6 7;4 5 6 7 8;5 6 7 8 9; det(A) trace(A) rank(A) norm(A)3. 已知 求A的特征值及特征向量,并分析其数学意义。实验八 数据处理和多项式计算一、实验目的1.掌握数据统计和分析
15、的方法。2.掌握数值插值与曲线拟合的方法及其应用。3.掌握多项式的常用运算。二、实验内容1. 将100个学生5门功课的成绩存入矩阵P中,进行如下处理:(1)分别求每门课的最高分、最低分及相应学生序号。(2)分别求每门课的平均分合标准方差。(3)5门课总分的最高分、最低分及相应学生序号。(4)将5门课总分按从大到小顺序存入zcj中,相应学生序号存入xsxh。提示:上机调试时,为避免输入学生成绩的麻烦,可用取值范围在45,95之间的随机矩阵来表示学生成绩。A=rand(5,100);P=100*A;Y,U1=max(P,2); % 求每门功课的最高分、序号X,U2=min(P,2); % 求每门功
16、课的最低分、序号YU1XU2Z1=mean(P,2) % 求每门功课的平均值Z2=std(P,1,2) % 求每门功课的标准方差B1=cumsum(P); % 求五门功课的总成绩B=B1(5,:);YZ,UZ1=max(B,2) % 求总成绩的最高分XZ,UZ2=min(B,2) % 求总成绩的最低分zcj=-sort(-B,2)2. 已知lg(x)在1,101区间11个整数采样点的函数值如表2所示。 表2 lg(x)在10个采样点的函数值x1112131415161718191101Lg(x)01.04141.32221.49141.61281.70761.78531.85131.90851
17、.95902.0043试求lg(x)的5次拟合多项式p(x),并分别绘制出lg(x)和p(x)在1,101区间的函数曲线。x=1:10:101;y=0,1.0414,1.3222,1.4914,1.6128,1.7076,1.7853,1.8513,1.9085,1.9590,2.0043;P,S=polyfit(x,y,5)plot(x,y,k*,x,polyval(P,x),k-)3. 有3个多项式试进行下列操作:求。(1)求的根。(2)当x取矩阵A的每一元素时,求P(x)的值。其中 (3)当以矩阵A为自变量时,求P(x)的值。其中A的值与(3)相同。p1=1,2,4,0,5p22=1,2
18、;p2=0,0,0,p22;p33=1,2,3;p3=0,0,p33;p=p1+p2.*p3x=roots(p) % 求多项式的根A=-1,1.2,-1.4;0.75,2,3.5;0,5,2.5;G=poly(A) % X=A时P(X)的值第五次实验内容:实验九 符号计算基础与符号微积分一、实验目的1.掌握定义符号对象的方法。2.掌握符号表达式的运算法则以及符号矩阵运算。3.掌握求符号函数极限及导数的方法。4.掌握求符号函数定积分和不定积分的方法。二、实验内容1. 已知x=6,y=5,利用符号表达式求提示:定义符号常数x=sym(6),y=sym(5)。x=sym(6);y=sym(5);z=
19、(x+1)/(sqrt(3+x)-sqrt(y)2. 用符号方法求下列极限或导数。(1)syms x; f=(x*(exp(sin(x)+1)-2*(exp(tan(x)-1)/(sin(x)3; limit(f,x,0)(2)已知,分别求syms a t x;A=ax,t3;t*cos(x),log(x);diff(A,x) %求X一阶导数diff(A,x,2) %求X二阶导数diff(diff(A,x),t) %求X导数的T导数3. 用符号方法求下列积分。(1)x=sym(x);f=1/(1+x4+x8);int(f)(2)x=sym(x);f=(x2+1)/(x4+1);int(f,0,
20、inf) 实验十 级数与方程符号求解一、实验目的1.掌握级数求和的方法。2.掌握将函数展开为泰勒级数的方法。3.掌握微分方程符号求解的方法。4.掌握代数方程符号求解的方法。二、实验内容1. 级数符号求和。计算n=sym(n);S=symsum(1/(2*n-1),n,1,10)(1)求级数之和函数,并求之和。syms n x;S2=symsum(n2)*x(n-1),n,1,inf) %求N的从1到无穷的和函数S3=symsum(n2)/5n) 2. 将ln(x)在x=1处按5次多项式展开为泰勒级数。x=sym(x);f=log(x);taylor(f,x,6,1)2求微分方程的符号解。 sy
21、ms x y a b k;m=dsolve(D2y+k2*y,y(0)=a,Dy(0)=b,x)4. 求下列方程和方程组的符号解。(1)x=solve(3*x*exp(x)+5*sin(x)-78.5,x)(2)x y=solve(sqrt(x2+y2)-100,3*x+5*y-8,x,y)(3)x=solve(log(1+x)-5/(1+sin(x)=2,x)(4)x=solve(x2+9*sqrt(x+1)-1,x)第六次实验内容:实验十三 Simulink的应用一、实验目的1. 熟悉Simulink的操作环境并掌握构建系统模型的方法。2. 掌握Simulink中子系统模块的建立与封装技术
22、。3. 对简单系统所给出的数学模型能转化为系统仿真模型并进行仿真分析。二、实验内容1. 假设从实际应用领域(力学、电学、生态或社会)中,抽象出有初始状态为0的二阶微分方程,是单位阶跃函数。用积分器直接构造求解微分方程的模型exm1.mdl并仿真。2. 利用传递函数模块建模。仍以下面的二阶微分方程为例3. 利用状态方程模块建模。仍以下面的二阶微分方程为例第七次实验内容:实验十四 综合实验(1)一、实验目的综合运用所学知识,掌握利用MATLAB解决控制系统仿真分析与设计的方法。二、实验内容1用Matlab表示传递函数为 的系统。2用Matlab表示传递函数为 的系统。3. 3用Matlab表示状态
23、空间表达式为 的系统。A=0 1 0;0 0 1;-1 -2 -3;B=0;0;1;C=1 0 0;D=0;Gf=ss(A,B,C,D)4. 4已知某控制系统的传递函数为,求Matlab描述的传递函数模型及零极点增益模型。num=1;den=1 3 2;Gtf=tf(num,den)Gzpk=zpk(Gtf)5. 5用MATLAB绘制典型二阶系统的单位阶跃响应曲线。Step:(Gtf)6. 6已知单位负反馈系统的开环传递函数为,试判断系统的闭环稳定性。k=1;z=-2;p=0 -1 -3;G=zpk(z,p,k);Gtf=feedback(G,1)pzmap(Gtf)7. 7已知一单位负反馈系
24、统的开环传递函数为G(s)= ,试求单位阶跃信号作为参考输入时产生的稳态误差。k=5;z=-0.2;p=0 0.5 -1.5;G=zpk(z,p,k);Gtf=feedback(G,1)step(Gtf)numk,denk=tfdata(Gtf);Kp=dcgain(numk,denk)第八次实验内容:实验十四 综合实验(2)一、实验目的综合运用所学知识,掌握利用MATLAB解决控制系统仿真分析与设计的方法。二、实验内容8. 8已知系统开环传递函数为,试利用MATLAB画出系统的奈奎斯特图。 num=2;den=conv(1 0,conv(3 1,0.5 1);G=tf(num,den);Ny
25、quist(G)9已知一单位反馈系统开环传递函数为G(s)=2/(s3+6s2+5s),试绘制bode图并计算系统频域性能指标。num=0 0 0 2; den=1 6 5 0;G=tf(num,den);Gtf=feedback(G,1);bode(Gtf)sys=tf(num,den); mag,phase,w=bode(sys); gm,pm,wcp,wcg=margin(mag,phase,w)Gm是系统的幅值裕量; Pm是系统的相角裕量; Wcp是Gm对应的角频率; Wcg是Pm对应的角频率;10求图示系统的脉冲扰动响应。10. 11已知单位反馈系统被控对象的传递函数为G0(s)=K0/(0.0001s3+0.101s2+s),试用bode图设计方法对系统进行超前串联校正,使之满足:(1)在速度信号作用下,系统的稳态误差小于等于0.001;(2)系统校正后,相角稳定裕度介于43与48度之间。11. 使用子系统封装实现下图所示的变化。 13按图示模型进行PID调节作用分析。12. 若已知如上题图所示的系统,试利用系统线性化分析的方法求系统的闭环传递函数,并绘制系统的阶跃响应曲线。