MATLAB实验指导书教师用稿.docx
《MATLAB实验指导书教师用稿.docx》由会员分享,可在线阅读,更多相关《MATLAB实验指导书教师用稿.docx(29页珍藏版)》请在冰豆网上搜索。
MATLAB实验指导书教师用稿
实验一MATLAB基本操作
一、实验目的
1、熟悉MATLAB基本的操作界面。
2、掌握MATLAB中变量、数组、向量等对象的生成方法。
3、掌握矩阵的生成和基本运算方法。
4、掌握MATLAB中的常用帮助命令使用方法
二、实验设备
计算机,MATLAB语言环境
三、实验基础理论
1、常见数学函数
如:
输入x=[-4.85-2.3-0.21.34.566.75],则
ceil(x)=-4-20257
fix(x)=-4-20146
floor(x)=-5-3-1146
round(x)=-5-20157
2、系统的在线帮助
(1)help命令:
1).当不知系统有何帮助内容时,可直接输入help以寻求帮助:
>>help(回车)
2).当想了解某一主题的内容时,如输入:
>>helpsyntax(了解Matlab的语法规定)
3).当想了解某一具体的函数或命令的帮助信息时,如输入:
>>helpsqrt(了解函数sqrt的相关信息)
(2)lookfor命令
现需要完成某一具体操作,不知有何命令或函数可以完成,如输入:
>>lookforline(查找与直线、线性问题有关的函数)
3、常量与变量
系统的变量命名规则:
变量名区分字母大小写;变量名必须以字母打头,其后
可以是任意字母,数字,或下划线的组合。
此外,系统内部预先定义了几个有特殊意
义和用途的变量,见下表:
(1)数值型向量(矩阵)的输入
1).任何矩阵(向量),可以直接按行方式输入每个元素:
同一行中的元素用逗号(,)
或者用空格符来分隔;行与行之间用分号(;)分隔。
所有元素处于一方括号([]内;
例1:
>>Time=[111212345678910]
>>X_Data=[2.323.43;4.375.98]
2).系统中提供了多个命令用于输入特殊的矩阵:
上面函数的具体用法,可以用帮助命令help得到。
如:
meshgrid(x,y)
输入x=[1234];y=[105];[X,Y]=meshgrid(x,y),则
X=Y=
12341111
12340000
12345555
目的是将原始数据x,y转化为矩阵数据X,Y。
(2)符号向量(矩阵)的输入
1).用函数sym定义符号矩阵:
函数sym实际是在定义一个符号表达式,这时的符号矩阵中的元素可以是任何的符号
或者是表达式,而且长度没有限制。
只需将方括号置于单引号中。
例2:
>>sym_matrix=sym('[abc;JackHelp_MeNO_WAY]')
sym_matrix=
[a,b,c]
[Jack,Help_Me,NO_WAY]
2).用函数syms定义符号矩阵
先定义矩阵中的每一个元素为一个符号变量,而后像普通矩阵一样输入符号矩阵。
例3:
>>symsabc;
>>M1=sym('Classical');
>>M2=sym('Jazz');
>>M3=sym('Blues');
>>A=[abc;M1,M2,M3;sym([235])]
A=
[a,b,c]
[Classical,Jazz,Blues]
[2,3,5]
4、数组(矩阵)的点运算
运算符:
+(加)、-(减)、./(右除)、.\(左除)、.^(乘方),
例4:
>>g=[1234];h=[4321];
>>s1=g+h,s2=g.*h,s3=g.^h,s4=g.^2,s5=2.^h
5、矩阵的运算
运算符:
+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)、’(转置)等;
常用函数:
det(行列式)、inv(逆矩阵)、rank(秩)、eig(特征值、特征向量)、rref
(化矩阵为行最简形)
例5:
>>A=[20–1;132];B=[17–1;423;201];
>>M=A*B%矩阵A与B按矩阵运算相乘
>>det_B=det(B)%矩阵A的行列式
>>rank_A=rank(A)%矩阵A的秩
>>inv_B=inv(B)%矩阵B的逆矩阵
>>[V,D]=eig(B)%矩阵B的特征值矩阵V与特征向量构成的矩阵D
-1
>>X=A/B%A/B=A*B,即XB=A,求X
-1
>>Y=B\A%B\A=B*A,即BY=A,求Y
6、平面绘图
MATLAB能绘制表现非常丰富的平面图形,以下是一些常用的MATLAB绘图函数,以绘制不同平面图元和实现不同的平面图形绘制功能:
(1).利用plot函数可依据给定的数据绘制平面图形,如绘制正弦函数y=sin(x)的图形:
>>x=-2*pi:
pi/10:
2*pi?
>>y=sin(x)?
>>plot(x,y,’r*-’)
可以使用gridon绘图网格线和holdon同时绘制两个图形,还可以给图形加上各种注解和
处理:
>>x=-2*pi:
pi/10:
2*pi;
>>y=sin(x);
>>plot(x,y,‘r*:
’)
>>gridon%绘制网格线
>>holdon
>>y2=2*cos(x);
>>plot((x,y2,‘b+-’)
>>xlabel('x轴');%x轴注解
>>ylabel('y轴');%y轴注解
>>title('正弦和余弦函数');%图形标题
>>legend({'y=sin(x)','y2=cos(x)'});%图形注解
(2).MATLAB还可以在同一图形窗口完成多个子图的功能,如:
>>x=-2*pi:
pi/10:
2*pi;
>>y=sin(x);
>>y2=cos(x);
>>y3=2*cos(x);
>>y4=sin(x)+cos(x);
>>subplot(2,2,1);
>>plot(x,y,‘r*:
’)
>>subplot(2,2,2);
>>plot(x,y2,‘b+-’)
>>subplot(2,2,3);
>>plot(x,y3,‘gp:
’)
>>subplot(2,2,4)
>>plot((x,y4,‘kx’)
(3).其它的各种二维函数图
四、实验内容与步骤:
1.输入A=[715;256;315],B=[111;222;333],在命令
窗口中执行下列表达式,掌握其含义:
A(2,3)A(:
2)A(3,:
)A(:
1:
2:
3)A(:
3).*B(:
2)
A(:
3)*B(2,:
)A*BA.*BA^2A.^2B/AB./A
2.
(1)
x1=85/180;
x=2*sin(x1*pi);
y=1+exp
(2);
z1=x/y
(2)x=[21+2i;-0.455];
y1=sqrt(1+x^2);
y2=x;
y=y1+y2;
z2=0.5*log(y)
(3)a=-3.0:
0.1:
3.0;
x1=exp(0.3*a)-exp(-0.3*a);
x=x1*0.5;
y1=a+0.3;
y=sin(y1);
z1=(0.3+a)*0.5;
z=log(z1);
z3=x.*y+z
(4)t=0:
0.5:
2.5;
z4=(t>=0&t<1).*(t.*t)+(t>=1&t<2).*(t.*t-1)+(t>=2&t<3).*(t.*t-2*t+1)
3.输入C=1:
2:
20,则C(i)表示什么?
其中i=1,2,3,…,10;
c=1:
2:
20
fori=1:
10
c(i)
end
4.练习把y=sin(x)/x,z=cos(x),u=2sin(x),v=sin(x)/cos(x)在[0,2p]区间内的四个子图分别用不同的颜色、点型和线型绘制在同一个窗口中,并给其中加上纵坐标,标题、图例和网格线。
x=0.01:
0.01*pi:
2*pi;
y=sin(x)./x;
z=cos(x);
u=2*sin(x);
v=sin(x)./cos(x);
figure
subplot(221)
plot(x,y,'r*-');xlabel('x');ylabel('y');title('sin(x)/x');gridon;legend('plot1');
subplot(222)
plot(x,z,'g+-');xlabel('x');ylabel('z');title('cos(x)');gridon;legend('plot2');
subplot(223)
plot(x,u,'b^-');xlabel('x');ylabel('u');title('2*sin(x)');gridon;legend('plot3');
subplot(224)
plot(x,z,'k<-');xlabel('x');ylabel('v');title('sin(x)./cos(x)');gridon;legend('plot4');
5.x=rand(5,5);
z1=det(x);
z2=trace(x);
z3=rank(x);
z4=norm(x,1);
z5=norm(x,2);
z6=norm(x,inf);
6.
(1)a=[1/21/31/4;1/31/41/5;1/41/51/6];
b=[0.95;0.67;0.52];
x=a\b
(2)a=[1/21/31/4;1/31/41/5;1/41/51/6];
b=[0.95;0.67;0.53];
x=a\b
(3)clear
a=[1/21/31/4;1/31/41/5;1/41/51/6];
z=cond(a,1)
五、实验报告要求:
1、简述实验目的、实验原理、实验内容和实验过程。
2、总结实验中的主要结论、实践技能和心得体会。
3、附上实验过程中所用的程序。
实验二MATLAB程序设计
一、实验目的
1、掌握建立和执行M文件的方法。
2、掌握利用if语句实现选择结构的方法。
3、掌握利用switch语句实现多分支选择结构的方法。
4、掌握定义和调用MATLAB函数的方法。
二、实验设备
计算机,MATLAB语言环境
三、实验内容与步骤:
1.求分段函数的值
用if语句实现,分别输出
x=input('请输入x的值');
ifx<0&x~=3
y=x^2+x-6;
elseifx>=0&x<5&x~=2&x~=3
y=x^2-5*x+6
else
y=x^2-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)分别用if语句和switch语句实现。
(2)输入百分制后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
%用IF实现
x=input('请输入一个分数');
ifx>=90
y='A';
elseifx>=80
y='B';
elseifx>=70
y='C';
elseifx>=60
y='D';
elsey='E'
end
y
%用SWITCH实现
x=input('请输入一个分数');
switchfix(x/10)
case9
y='A';
case8
y='B';
case7
y='C';
case6
y='D';
otherwise
y='E';
end
y
x=input('请输入一个分数');
ifx<0|x>100
y='输入的分数有错'
elseifx>=90
y='A';
elseifx>=80
y='B';
elseifx>=70
y='C';
elseifx>=60
y='D';
elsey='E'
end
y
3.硅谷公司员工的工资计算方法如下:
(1)工作时数超过120小时者,超过部分加发15%;
(2)工作时数低于60小时者,扣发700元;
(3)其余按每小时84元计发。
试编程按输入的工号和该号员工的工时数,计算应发工资。
x=input('请输入工作小时数');
if84*x-700<=0
y=0;
elseifx<60
y=84*x-700;
elseifx<=120
y=84*x;
else
y=84*120+(x-120)*84*(1+15/100);
end
y
4.一个物理系统可用下列方程组表示:
从键盘输入
function[x]=far(a,b)
c=b';
x=inv(a)*c;
m1=input('请输入m1');
m2=input('请输入m2');
theta=input('请输入theta');
g=9.8;
a=[m1*cos(theta)-m1-sin(theta)0;m1*sin(theta)0cos(theta)0;0m2-sin(theta)0;00-cos(theta)1];
b=[0m1*g0m2*g];
[x]=far(a,b);
要求:
定义一个求解线性方程组AX=B的函数文件,然后在命令文件中调用该函数文件。
四、实验报告要求:
1、对实验内容中1~4作出实验记录,特别是遇到的问题和解决办法。
2、给出1~4的程序代码和运行结果。
3、总结实验中的主要结论、实践技能和心得体会。
4、实验报告必须使用实验报告用纸,必须手写。
5、实验报告请在实验完成后一周内提交。
实验三Simulink基本操作
一、实验目的
1、熟悉Simulink基本模块(信号发生器,数学模块,示波器)的使用。
2、掌握Simulink仿真参数的设置。
3、熟悉构建Simulink子系统。
4、学习自建模快的封装,帮助文档的编写。
5、掌握MATLAB命令窗口与Simulink的交互。
二、实验指导原理
1、使用Simulink进行建模和仿真的过程
启动MATLAB之后,在命令窗口中输入命令“Simulink”或单击MATLAB工具栏上的Simulink图标,打开Simulink模块库窗口。
在Simulink模块库窗口中单击菜单项“File|New|Model”,就可以新建一个Simulink模型文件。
利用鼠标单击Simulink基础库中的子库,选取所需模块,将它拖动到新建模型窗口中的适当位置,如果需要对模型模块进行参数设置和修改,只需选中模型文件中的相应模块,单击鼠标右键,弹出快捷菜单,从中选取相应参数进行修改,如图所示。
点击
,即可仿真所建模块。
2、MATLAB命令窗口中运行Simulink。
若参数设置为变量,变量可先在MATLAB命令窗口中进行定义,并使用open,sim等命令直接运行信号。
然后在命令行提示符下输入>>a=1;b=1;open('s01.mdl');sim('s01.mdl');可得到同样的结果,
3、子系统建立与封装
首先将Simulink模块库中Ports&Subsystems子模块库中的Subsystem模块拖动到新建的模型文件窗口中,双击该Subsystem模块就会打开该子系统,其输入用In模块表示,输出用Out模块表示,一个子系统可以有多个输入、输出。
然后如下图所示建立子系统的内部模块。
上例中的子系统模型还存在一些缺点:
子系统中的参数(如增益G)、传递函数系数等是通过MATLAB工作空间传入的,这就破坏了子系统内部的隐藏性质。
对子系统封装以后,它就可以像Simulink模块库所提供的模块一样来使用。
选中上例中子系统模块,改名为Mysubsystem,选择菜单项“Edit|MaskSubsystem”,弹出MaskEditor对话框,
在Icon标签下主要是对封装模块的图标进行设置,可以设置图标的边框是否可见、图标是否透明、是否旋转、绘图单位等,还可使用命令来绘制图标,该标签下部给出了绘制图标的语法举例。
在Parameters标签下可以设置子系统的参数,本例中需要设置的参数就是G、A、B、C四个。
参数设置可以采用编辑框(Edit)、弹出列表(Popup)或复选框(Checkbox)形式。
一般情况下,初始化标签可使用默认值。
文档标签的三部分将分别显示在封装模块的参数设置对话框和帮助文档中,
三、实验内容
1、通过示波器观察1MHz,幅度为15mV的正弦波和100KHz,幅度为5mV的正弦波相乘的结果。
写出数学表达式。
通过使用三踪示波器同时观察1MHz、100KHz正弦波以及相乘的结果。
注意设置仿真参数和示波器的扫描参数和幅度显示参数。
请调整参数得出下图波形。
2、将50Hz,有效值为220V的正弦交流电信号通过全波整流(绝对值
)模
块,观察输出波形。
3、学习构建SIMULINK子系统:
构建一个子系统,使得它具有将输入信号m(t)(如一个100Hz的正弦波)和一个常数C相加后再和一个1000Hz的幅度为A的正弦波相乘的功能。
y(t)=A(m(t)+C)sin(2*pi*f*t)
其中f=1000Hz。
保存为s23.用sim指令在命令空间启动模型进行仿真:
在Matlab命令空间中用语句对参数A,C,f进行设置,并对采用命令open打开,采用sim指令进行仿真。
请给出指令语句。
S=2;C=2;f=1000;open('s23.mdl');sim('s23.mdl')
4、对子系统进行封装:
请对3所建立所子系统进行封装(Mask),编写参数输入对话框和帮助文档。
并将模块放在一个自己的库中。
四、实验报告要求:
1.写明实验目的和实验原理。
实验原理中简要说明实验内容中所使用的MATLAB命令。
2.在实验过程和结果中,要列项目反映各自的实验内容,编写的程序,运行结果,按实验内容对结果的分析与判断。
程序和运行结果(图)可以从屏幕上复制,打印报告或打印粘贴在报告上。
不方便打印的同学,要求手动从屏幕上抄写和绘制。
3.简要写出实验心得和问题或建议。
实验四通信系统的Simulink建模与仿真
一、实验目的
1、熟悉通信系统中数字2ASK调制系统、采样定理和频分多址的基本原理。
2、了解2ASK调制解调、采样定理和频分多址的建模方法。
3、掌握Simulink常用通信仿真模块参数的设置。
二、实验指导原理
1、2ASK调制解调系统建模与仿真
在一般情况下,调制信号为具有一定波形形状的二进制序列,则二进制振幅键控信号可用下式描述
2ASK信号的产生原理框图如图2.1所示。
(a)乘积法(b)通断键控法
图3.12ASK信号产生的原理框图
因此根据图3.1中2ASK的乘积法产生原理框图可以采用以下的simulink模块对其进行仿真,其中解调采用同步解调。
图3.22ASK信号的simulink仿真模型
2、采样及采样定律
在数字通信系统中传输模拟信号,首先要完成模/数变换。
发送端先将模拟信号采样,使其成为一系列离散的采样值,然后再将采样值量化为有限的量化值,并经编码变换成数字信号,用数字通信方式传输。
采样定理告诉我们:
如果对某一带宽有限的时间连续信号(模拟信号)进行采样,且采样速率达到两倍以上的最高工作频率,那么根据这些采样值就能还原出原始信号。
图3.3采样定理的simulink仿真模型
图3.4采样后信号的时域和频域波形
3、频分多址技术
在无线电通信系统中,在相同的地域、相同的时间范围及相同的频率范围,每个接收设备的天线都沐浴在众多发射设备发出的电磁波中。
但是它们在进行着与各自对象的信息交换(即通信),这靠的是多址技术。
也就是说,靠信号的某些特征的差别,接收设备将发给自己的无线电信号与其他的信号区别开来。
有线通信的频分多址级数也是基于相同的原理。
频分多址是将通信的频段划分成若干等间隔的信道频率,每对通信的设备工作在某个分配或指定的信道上,即不同的通信用户是靠不同的频率划分来实现通信的,称为频分多址。
早期的无线通信系统,包括现在的无线电广播、短波、大多数专用通信网都是采用频分多址技术来完成的。
图3.5所示是频分多址通信系统的仿真模型
图3.5频分多址技术的仿真图图3.5DSB-AM子系统图
三、实验内容
1、参照图3.1,建立一个2ASK通信系统,要求:
伯努利二进制随机数产生器是基于采样的,采样时间为1,占空比为1/2;正弦载波为时基信号,幅度为1,频率为10Hz,记录仿真的结果并进行分析。
2、参照图3.3,建立一个模型验证采样定理,要求:
正弦载波为时基信号,幅度为1,频率为5Hz,比较分析采样脉冲信号频率分别为40Hz和4Hz时,采用后的时域和频域波形。
3、参照图3.5,建立一个频分多址模块,要求三路调制信号分别采用幅度值为1,频率为1Hz的正弦、方波、锯齿波信号,三路信号的载波信号分别采用幅度值为1,频率为30Hz,60Hz和80Hz的正弦信号。
记录仿真的结果并进行分析。
四、实验报告要求:
1.写明实验目的和实验原理。
实验原理中简要说明实验内容中所使用的MATLAB命令。
2.在实验过程和结果中,要列项目反映各自的实验内容,编写的程序,运行结果,按实验内容对结果的分析与判断。
程序和运行结果(图)可以从屏幕上复制,打印报告或打印粘贴在报告上。
不方便打印的同学,要求手动从屏幕上抄写和绘制。
3.简要写出实验心得和问题或建议。