matlab实验内容答案解析.docx
- 文档编号:5297428
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:22
- 大小:150.33KB
matlab实验内容答案解析.docx
《matlab实验内容答案解析.docx》由会员分享,可在线阅读,更多相关《matlab实验内容答案解析.docx(22页珍藏版)》请在冰豆网上搜索。
matlab实验内容答案解析
实验报告说明:
matlab课程实验需撰写8个实验报告,每个实验报告内容写每次实验内容中标号呈黑体大号字显示的题目。
第一次实验内容:
实验一MATLAB运算基础
一、实验目的
1.熟悉启动和退出MATLAB的方法。
2.熟悉MATLAB命令窗口的组成。
3.掌握建立矩阵的方法。
4.掌握MATLAB各种表达式的书写规则以及常用函数的使用。
二、实验内容
1.先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。
(1)
(2)
,其中
(3)
提示:
利用冒号表达式生成a向量,求各点的函数值时用点乘运算。
(4)
,其中t=0:
0.5:
2.5
提示:
用逻辑表达式求分段函数值。
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]。
3.设有矩阵A和B
,
(1)求它们的乘积C。
(2)将矩阵C的右下角3×2子矩阵赋给D
(3)查看MATLAB工作空间使用情况。
4.完成下列操作:
(1)求[100,999]之间能被21整除的数的个数。
提示:
先利用冒号表达式,再利用find和length函数。
(2)建立一个字符串向量,删除其中的大写字母。
提示:
利用find函数和空矩阵。
第二次实验内容:
实验三选择结构程序设计
一、实验目的
1.掌握建立和执行M文件的方法。
2.掌握利用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('inputthevalueofx:
');
ifx<0&x~=3
y=x*x+x-6;
elseifx>=0&x<10&x~=2&x~=3
y=x*x-5*x+6;
else
y=x*x-x-1;
end
y
2.输入一个百分制成绩,要求输出成绩等级A,B,C,D,E。
其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
要求:
(1)用switch语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出错误信息。
if语句实现:
clear
x=input('inputscore:
');
ifx<0
disp('Sorry,Thefailscore!
')
elseifx<60
disp('E')
elseifx<70
disp('D')
elseifx<80
disp('C')
elseifx<90
disp('B')
elseifx<=100
disp('A')
else
disp('Sorry,Thefailscore!
')
end
switch语句实现:
clear
score=input('inputthescore:
');
switchscore
casenum2cell(0:
59)
disp('E')
casenum2cell(60:
69)
disp('D')
casenum2cell(70:
79)
disp('C')
casenum2cell(80:
89)
disp('B')
casenum2cell(90:
100)
disp('A')
otherwise
disp('Sorry!
It''sthefailscore,inputthescoreagain')
end
3.建立5×6矩阵,要求输出矩阵第n行元素。
当n值超过矩阵的行数时,自动转为输出矩阵最
后一行元素,并给出出错信息。
clear
A=[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=');
try
B=A(n,:
);
catch
B=A(5,:
);
lasterr
end
B
实验四循环结构程序设计
一、实验目的
1.掌握利用for语句实现循环结构的方法。
2.掌握利用while语句实现循环结构的方法。
3.熟悉利用向量运算来代替循环操作的方法。
二、实验内容
1.根据
,求
的近似值。
当n分别取100、1000、10000时,结果是多少?
要求:
分别用循环结构和向量运算(使用sum函数)来实现。
应用sum的方法:
clear
n=100;i=1:
n;
y=1./i.^2;
y1=sum(y);
pai=sqrt(6*y1)
第二种方法:
clear
y=0;
n=input('输入数据n:
')
fori=1:
n
y=y+1/(i*i);
end
pai=sqrt(6*y)
2.根据.
,求:
(1)y<3时的最大n值。
(2)于
(1)的n值对应的y值。
clear
y=0;n=1000;
fori=1:
1000
y=y+1/(2*i-1);
ify>=3
break;
end
i=i+1;
end
i
3.已知
求
中:
(1)最大值、最小值、各数之和。
(2)正数、零、负数的个数。
-------------------------------------------------
f=[1,0,1];
forn=4:
100
f(n)=f(n-1)-2*f(n-2)+f(n-3);
end
k=length(find(f<0))
k=length(find(f>0))
k=length(find(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+2i
[a,b,c,d]=susb(x)
2.一个自然数是素数,且它的各位数字位置经过任意对换后仍为素数,则称是绝对素数。
例如13是绝对素数。
试求所有两位的绝对素数。
要求:
定义一个判断素数的函数文件。
function[q]=apnum(p);%以下为函数文件,需单独保存
fori=2:
9
n=find(rem(p,i)==0);%找出能被i整除的p的位置
p(n)=[];%消去能被i整除的p
end
q=10*rem(p,10)+fix(p/10);%p的个位和十位调换,调换后为q
forj=2:
9
m=find(rem(q,j)==0);%找出能被j整除的q的位置
q(m)=[];%消去能被j整除的q
end
调用:
clearall
p=10:
99;
[q]=apnum(p)
3.已知
(1)当
时,求y的值。
(2)当
时,求y的值。
第三次实验内容:
实验六高层绘图操作
一、实验目的
1.掌握绘制二维图形的常用函数。
2.掌握绘制三维图形的常用函数。
二、实验内容
1.已知
完成下列操作:
(1)在同一坐标系下用不同的颜色和线型绘制三条曲线。
(2)以子图形式绘制3条曲线。
(3)分别用条图形、阶梯图、杆图和填充图绘制3条曲线。
2.分别用plot和fplot函数绘制函数
的曲线,分析两曲线的差别。
3.绘制函数的曲面图和等高线。
已知
提示:
绘制三维曲面图,首先要选定一平面区域并在该区域产生网络坐标矩阵。
在做本题前,先分析并上机验证下列命令的执行结果,从中体会产生网络坐标矩阵的方法。
[x,y]=meshgrid(-1:
0.5:
2,1:
5)
3.已知6 x=7: 29;y=16: 35; [x,y]=meshgrid(x,y);%在[7,29]×[16,35]区域生成网格坐标 z=2*x+5*y; k=find(z==126);%找出解的位置 x(k),y(k)%输出对应位置的x,y即方程的解 5.裁掉表现函数z=sin(y)cos(x)三维曲面图中z>0.25部分。 x=0: 0.1: 2*pi;[x,y]=meshgrid(x);z=sin(y).*cos(x); [I,J]=find(z>0.25); forii=1: length(I) z(I(ii),J(ii))=NaN; end surf(x,y,z); 实验七低层绘图操作 一、实验目的 1.掌握图形对象属性的基本操作。 2.掌握利用图形对象进行绘图操作的方法。 二、实验内容 1.建立一个图形窗口,使之背景颜色为红色,并在窗口上保留原有的菜单项,而且在按下鼠标器的左键之后显示出LeftButtonPressed字样。 hf=figure('Color',[1,0,0],'WindowButtonDownFcn','disp(''LeftButtonPressed.'')'); 2.先利用缺省属性绘制曲线 ,然后通过图形句柄操作来改变曲线的颜色、线型和线宽,并利用文字对象给曲线添加文字标注 。 实验十二菜单设计 一、实验目的 1.了解图形用户界面的特点。 2.掌握菜单设计的方法。 3.掌握对话框设计的方法。 二、实验内容 1.设计菜单。 菜单条仅有File菜单项,File下有New、Plot和Exit等3个选项。 选择New时利用Edit命令建立一个新的M文件。 选择Plot将显示下一级菜单,其中有SineWave和CosineWave两个子菜单项,且若选择了其中的SineWave子菜单项,则将打开一个新的图形窗口并显示出正弦曲线。 若选择了其中的CosineWave子菜单项,则将打开一个新的图形窗口并显示出余弦曲线。 如果选择Exit菜单项,则将关闭窗口并推出用户系统回到MATLAB命令窗口。 2.为图形窗口建立快捷菜单,用以控制窗口的背景颜色和大小。 4.设计一个对话框,其中有一个编辑框和按钮,当单击按钮时,使编辑框的内容加5。 第四次实验内容: 实验二矩阵分析 一、实验目的 1.掌握生成特殊矩阵的方法。 2.掌握矩阵分析的方法。 二、实验内容 1.产生5阶希尔伯特矩阵H和5阶帕斯卡矩阵P,且求其行列式的值Hh和Hp以及它们的条件数Th和Tp,判断哪个矩阵性能更好,为什么? H=hilb(5)%产生55阶希尔波特矩阵 P=pascal(5)%产生55阶帕斯卡矩阵 Hh=det(H);%计算行列式的值 Ph=det(P); Th=cond(H);%计算条件数 Tp=cond(P); Hh Ph Th Tp 2.建立一个5×5矩阵,求它的行列式值、迹、秩和范数。 A=[12345;23456;34567;45678;56789]; det(A) trace(A) rank(A) norm(A) 3.已知 求A的特征值及特征向量,并分析其数学意义。 实验八数据处理和多项式计算 一、实验目的 1.掌握数据统计和分析的方法。 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);%求每门功课的最低分、序号 Y U1 X U2 Z1=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所示。 表2lg(x)在10个采样点的函数值 x 1 11 21 31 41 51 61 71 81 91 101 Lg(x) 0 1.0414 1.3222 1.4914 1.6128 1.7076 1.7853 1.8513 1.9085 1.9590 2.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,5] p22=[1,2];p2=[0,0,0,p22]; p33=[1,2,3];p3=[0,0,p33]; p=p1+p2.*p3 x=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=(x+1)/(sqrt(3+x)-sqrt(y)) 2.用符号方法求下列极限或导数。 (1) symsx; f=(x*(exp(sin(x))+1)-2*(exp(tan(x))-1))/(sin(x))^3; limit(f,x,0) (2)已知 ,分别求 symsatx; A=[a^x,t^3;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+x^4+x^8); int(f) (2) x=sym('x'); f=(x^2+1)/(x^4+1); int(f,0,inf) 实验十级数与方程符号求解 一、实验目的 1.掌握级数求和的方法。 2.掌握将函数展开为泰勒级数的方法。 3.掌握微分方程符号求解的方法。 4.掌握代数方程符号求解的方法。 二、实验内容 1.级数符号求和。 计算 n=sym('n'); S=symsum(1/(2*n-1),n,1,10) (1)求级数 之和函数,并求 之和。 symsnx; S2=symsum((n^2)*x^(n-1),n,1,inf)%求N的从1到无穷的和函数 S3=symsum((n^2)/5^n) 2.将ln(x)在x=1处按5次多项式展开为泰勒级数。 x=sym('x'); f=log(x); taylor(f,x,6,1) 2.求微分方程的符号解。 symsxyabk; m=dsolve('D2y+k^2*y','y(0)=a','Dy(0)=b','x') 4.求下列方程和方程组的符号解。 (1) x=solve('3*x*exp(x)+5*sin(x)-78.5','x') (2) [xy]=solve('sqrt(x^2+y^2)-100','3*x+5*y-8','x,y') (3) x=solve('log(1+x)-5/(1+sin(x))=2','x') (4) x=solve('x^2+9*sqrt(x+1)-1','x') 第六次实验内容: 实验十三Simulink的应用 一、实验目的 1.熟悉Simulink的操作环境并掌握构建系统模型的方法。 2.掌握Simulink中子系统模块的建立与封装技术。 3.对简单系统所给出的数学模型能转化为系统仿真模型并进行仿真分析。 二、实验内容 1.假设从实际应用领域(力学、电学、生态或社会)中,抽象出有初始状态为0的二阶微分方程 , 是单位阶跃函数。 用积分器直接构造求解微分方程的模型exm1.mdl并仿真。 2.利用传递函数模块建模。 仍以下面的二阶微分方程为例 3.利用状态方程模块建模。 仍以下面的二阶微分方程为例 第七次实验内容: 实验十四综合实验 (1) 一、实验目的 综合运用所学知识,掌握利用MATLAB解决控制系统仿真分析与设计的方法。 二、实验内容 1.用Matlab表示传递函数为 的系统。 2.用Matlab表示传递函数为 的系统。 3.3.用Matlab表示状态空间表达式为 的系统。 A=[010;001;-1-2-3]; B=[0;0;1]; C=[100]; D=0; Gf=ss(A,B,C,D) 4.4.已知某控制系统的传递函数为 ,求Matlab描述的传递函数模型及零极点增益模型。 num=[1]; den=[132]; 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.已知一单位负反馈系统的开环传递函数为G(s)= ,试求单位阶跃信号作为参考输入时产生的稳态误差。 k=5; z=[-0.2]; p=[00.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([10],conv([31],[0.51])); G=tf(num,den); Nyquist(G) 9.已知一单位反馈系统开环传递函数为G(s)=2/(s^3+6s^2+5s),试绘制bode图并计算系统频域性 能指标。 num=[0002];den=[1650]; 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.0001s^3+0.101s^2+s),试用bode图设计方法对系统进行超前串联校正,使之满足: (1)在速度信号作用下,系统的稳态误差小于等于0.001; (2)系统校正后,相角稳定裕度介于43与48度之间。 11.使用子系统封装实现下图所示的变化。 13.按图示模型进行PID调节作用分析。 12.若已知如上题图所示的系统,试利用系统线性化分析的方法求系统的闭环传递函数,并绘制系统的阶跃响应曲线。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 实验 内容 答案 解析
![提示](https://static.bdocx.com/images/bang_tan.gif)