实验1Word格式.docx
《实验1Word格式.docx》由会员分享,可在线阅读,更多相关《实验1Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
这些变量被放置在MATLAB的工作空间中,工作空间窗口提供了变量的一些重要信息,包括变量的名称、维数大小、占用内存大小、以及数据类型等信息。
查看工作空间的另一种方法是使用whos命令。
在命令提示符后输入whos命令,工作空间中的内容概要将作为输出显示在命令窗口中。
有的命令可以用来清除不必要的数据,同时释放部分系统资源。
clear命令可以用来清除工作空间的所有变量,如果要清除某一特定变量则需要在clear命令后加上该变量的名称。
另外,clc命令用来清除命令窗口的内容。
如果希望将MATLAB所创建的变量及重要数据保留下来,则使用save命令,并在其后加上文件名,即可将整个工作空间保存为一个扩展名为.mat的文件。
使用load命令,并在其后加上文件名,则可将MATLAB数据文件(.mat文件)中的数据加载到工作空间中。
MATLAB历史命令窗口记录了每次输入的命令。
在该窗口中可以对以前的历史命令进行查看、复制或者直接运行。
对于初学者而言,需要掌握的最重要且最有用的命令应为help命令。
MATLAB命令和函数有数千个,而且许多命令的功能非常强大,调用形式多样。
要想了解一个命令或函数,只需在命令提示符后输入help,并加上该命令或函数的名称,则MATLAB会给出其详细帮助信息。
另外,MATLAB还精心设计了演示程序系统(Demo),内容包括MATLAB的内部主要函数和各个工具箱(Toolbox)的使用。
初学者可以方便地通过这些演示程序及其给出的程序源代码进行直观的感受和学习。
用户可以通过两种途径打开演示程序系统。
一是在命令窗口中输入demo或demos命令并按Enter键;
二是选择“help”→“Demos”菜单命令。
(1)算术运算
MATLAB可以像一个简单的计算器一样使用,不论是实数运算还是复数运算都能轻松完成。
标量的加法、减法、除法和幂运算均可通过常规符号“+”、“”、“*”、“/”、以及“^”来完成。
对于复数中的虚数单位,MATLAB采用预定义变量i或j表示,即i=j=
。
因此,一个复常量可用直角坐标形式来表示,例如,
A=-3-i*4
A=
-3.0000-4.0000i
将复常量-3-i4赋予了变量A。
一个复常量还可用极坐标的形式来表示,例如,
B=2*exp(i*pi/6)
B=
1.7321+1.0000i
其中,pi是MATLAB预定义变量,pi=
复数的实部和虚部可以通过real和imag运算符来实现,而复数的模和辐角可以通过abs和angle运算符来实现。
但应注意辐角的单位为弧度。
例如,复数A的模和辐角、复数B的实部和虚部的计算分别为
A_mag=abs(A)
A_mag=
5
A_rad=angle(A)
A_rad=
-2.2143
B_real=real(B)
B_real=
1.7321
B_imag=imag(B)
B_imag=
1.0000
如果将弧度值用“度”来表示,则可进行转换,即
A_deg=angle(A)*180/pi
A_deg=
-126.8699
复数A的模可表示为
,因此,其共轭复数可通过conj命令来实现,例如,
A_mag=sqrt(A*conj(A))
5
(2)向量运算
向量是组成矩阵的基本元素之一,MATLAB具有关于向量运算的强大功能。
一般地,向量被分为行向量和列向量。
生成向量的方法有很多,我们主要介绍两种。
①直接输入向量:
即把向量中的每个元素列举出来。
向量元素要用“[]”括起来,元素之间可用空格、逗号分隔生成行向量,用分号分隔生成列向量。
例如,
A=[1,3,5,21]
13521
B=[1;
3;
5;
21]
1
3
21
②利用冒号表达式生成向量:
这种方法用于生成等步长或均匀等分的行向量,其表达式为x=x0:
step:
xn。
其中,x0为初始值;
step表示步长或增量;
xn为结束值。
如果step值缺省,则步长默认为1。
C=0:
2:
10
C=
0246810
D=0:
D=
012345678910
在连续时间信号和离散时间信号的表示过程中,我们经常要用到冒号表达式。
例如,对于
范围内的连续信号,可用冒号表达式“t=0:
0.001:
1;
”来近似表达该区间,此时,向量t表示该区间以0.001为间隔的1001个点。
如果一个向量或一个标量与一个数进行运算,即“+”、“”、“*”、“/”、以及“^”运算,则运算结果是将该向量的每一个元素与这个数逐一进行相应的运算所得到的新的向量。
10;
E=C/4
E=
00.50001.00001.50002.00002.5000
其中,第一行语句结束的分号是为了不显示C的结果;
第二句没有分号则显示出E的结果。
一个向量中元素的个数可以通过命令“length”获得,例如,
t=0:
L=length(t)
L=
1001
(3)矩阵运算
MATLAB又称矩阵实验室,因此,MATLAB中矩阵的表示十分方便。
例如,输入矩阵
在MATLAB命令窗口中可输入下列命令得到,即
a=[111213;
212223;
313233]
a=
111213
212223
313233
其中,命令中整个矩阵用括号“[]”括起来;
矩阵每一行的各个元素必须用逗号“,”或空格分开;
矩阵的不同行之间必须用分号“;
”或者按Enter键分开。
在矩阵的加减运算中,矩阵维数相同才能实行加减运算。
矩阵的加法或减法运算是将矩阵的对应元素分别进行加法或减法运算。
在矩阵的乘法运算中,要求两矩阵必须维数相容,即第一个矩阵的列数必须等于第二个矩阵的行数。
a=[123;
456]
123
456
b=[12;
34;
56]
b=
12
34
56
c=a*b
c=
2228
4964
MATLAB中矩阵的点运算指维数相同的矩阵位置对应元素进行的算术运算,标量常数可以和矩阵进行任何点运算。
常用的点运算包括“.*”、“./”、“.\”、“.^”等。
矩阵的加法和减法是在对应元素之间进行的,所以不存在点加法或点减法。
点乘运算,又称Hadamard乘积,是指两维数相同的矩阵或向量对应元素相乘,表示为C=A.*B。
点除运算是指两维数相同的矩阵或向量中各元素独立的除运算,包括点右除和点左除。
其中,点右除表示为C=A./B,意思是A对应元素除以B对应元素;
点左除表示为C=A.\B,意思是B对应元素除以A对应元素。
点幂运算指两维数相同的矩阵或向量各元素独立的幂运算,表达式为C=A.^B。
【例1-1】已知t为一向量,用MATLAB命令计算
在
区间上对应的值。
解:
表达式中的运算都是点运算,MATLAB源程序为
0.01:
y=(sin(t).*exp(-2*t)+5)./(cos(t)+t.^2+1);
plot(t,y),xlabel('
t'
),ylabel('
y'
)
这里,我们未将y向量的结果显示出来,而是利用plot命令将结果绘出图形来,如图1-2所示。
(4)MATLAB软件的符号运算
MATLAB符号运算工具箱提供的函数命令是专门研究符号运算功能的。
符号运算是指符号之间的运算,其运算结果仍以标准的符号形式表达。
符号运算是MATLAB的一个极其重要的组成部分,符号表示的解析式比数值解具有更好的通用性。
在使用符号运算之前必须定义符号变量,并创建符号表达式。
定义符号变量的语句格式为
syms变量名
其中,各个变量名须用空格隔开。
例如,定义x、y、z三个符号变量的语句格式为
symsxyz
我们可以用whos命令来查看所定义的符号变量,即
clear
whos
NameSizeBytesClass
x1x1126symobject
y1x1126symobject
z1x1126symobject
Grandtotalis6elementsusing378bytes
可见,变量x、y、z必须通过符号对象定义,即symobject,才能参与符号运算。
另一种定义符号变量的语句格式为
sym('
变量名'
例如,x、y、z三个符号变量定义的语句格式为
x=sym('
x'
);
y=sym('
z=sym('
z'
sym语句还可以用来定义符号表达式,语句格式为
表达式'
例如,定义表达式x+1为符号表达式对象,语句为
x+1'
另一种创建符号表达式的方法是先定义符号变量,然后直接写出符号表达式。
例如,在MATLAB中创建符号表达式
,其MATLAB源程序为
symst
y=(sin(t).*exp(-2*t)+5)./(cos(t)+t.^2+1)
y=
(sin(t)*exp(-2*t)+5)/(cos(t)+t^2+1)
例如,符号算术运算的MATLAB源程序为
symsab
f1=1/(a+1);
f2=2*a/(a+b);
f3=(a+1)*(b-1)*(a-b);
f1+f2
ans=
1/(a+1)+2*a/(a+b)
f1*f3
ans=
(b-1)*(a-b)
f1/f3
1/(a+1)^2/(b-1)/(a-b)
在符号运算中,可以用“simple”或者“simplify”函数来化简运算结果,例如,
symsx
f1=sin(x)^2;
f2=cos(x)^2;
y=f1+f2
sin(x)^2+cos(x)^2
y=simplify(y)
1
(5)MATLAB软件简单二维图形绘制
MATLAB的plot命令是绘制二维曲线的基本函数,它为数据的可视化提供了方便的途径。
例如,函数
关于变量x的曲线绘制的语句格式为
plot(x,y)
其中,输出以向量x为横坐标,向量y为纵坐标,且按照向量x、y中元素的排列顺序有序绘制图形。
但向量x与y必须拥有相同的长度。
绘制多幅图形的语句格式为
plot(x1,y1,'
str1'
x2,y2,'
str2'
...)
其中,用str1制定的方式,输出以x1为横坐标、y1为纵坐标的图形。
用str2制定的方式,输出以x2为横坐标、y2为纵坐标的图形。
若省略str,则MATLAB自动为每条曲线选择颜色与线型。
图形完成后,可以通过几个命令来调整显示结果。
如gridon用来显示格线;
axis([xmin,xmax,ymin,ymax])函数调整坐标轴的显示范围。
其中,括号内的“,”可用空格代替;
xlabel和ylabel命令可为横坐标和纵坐标加标注,标注的字符串必须用单引号引起来;
title命令可在图形顶部加注标题。
【实例1-2】用MATLAB命令绘制函数
的波形图。
MATLAB源程序为
y=sin(5*pi*t)+1./(cos(pi*t)+2);
plot(t,y)
axis([0,5,-12,5])
xlabel('
),
gridon
程序运行结果如图1-3所示。
用subplot命令可在一个图形窗口中按照规定的排列方式同时显示多个图形,方便图形的比较。
其语句格式为
subplot(m,n,p)
或者
subplot(mnp)
其中,m和n表示在一个图形窗口中显示m行n列个图像,p表示第p个图像区域,即在第p个区域作图。
例如,比较正弦信号相位差的MATLAB源程序为
y1=sin(2*pi*t);
y2=sin(2*pi*t+pi/6);
subplot(211),plot(t,y1)
y1'
),title('
y1=sin(2*pi*t)'
subplot(212),plot(t,y2)
y2'
y2=sin(2*pi*t+pi/6)'
程序运行结果如图1-4所示。
除了plot命令外,MATLAB提供了ezplot命令绘制符号表达式的曲线,其语句格式为
ezplot(y,[a,b])
其中,[a,b]参数表示符号表达式的自变量取值范围,默认值为
【实例1-3】利用MATLAB的ezplot命令绘出函数
y='
-16*x^2+64*x+96'
;
ezplot(y,[0,5])
程序运行结果如图1-5所示。
在绘图过程中,我们可利用“holdon”命令来保持当前图形,继续在当前图形状态下绘制其他图形,即可在同一窗口下绘制多幅图形。
“holdoff”命令用来释放当前图形窗口,绘制下一幅图形作为当前图形。
(6)M文件
MATLAB是解释型语言,也就是说在MATLAB命令行中输入的命令在当前MATLAB进程中被解释运行,无需编译和链接等。
MATLAB文件分为两类:
M脚本文件(M-Script)和M函数(M-function),它们均为由ASCII码构成的文件,该文件可直接在文本编辑器中编写,称为M文件,保存的文件扩展名是.m。
M脚本文件包含一族由MATLAB语言所支持的语句,并保存为M文件。
它类似于DOS下的批处理文件,不需要在其中输入参数,也不需要给出输出变量来接受处理结果。
脚本仅是若干命令或函数的集合,用于执行特定的功能。
其执行方式很简单,用户只需在MATLAB的提示符>
下键入该M文件的文件名,这样MATLAB就会自动执行该M文件中的各条语句,并将结果直接返回到MATLAB工作空间中。
脚本M文件实际上是一系列MATLAB命令的集合,它的作用与在MATLAB命令窗口输入的一系列命令等效。
M函数文件不同于M脚本文件,是一种封装结构,通过外界提供输入量而得到函数文件的输出结果。
函数是接受入口参数返回出口参数的M文件,程序在自己的工作空间中操作变量,与工作空间分开,无法访问。
M函数文件和M脚本文件都是在编辑器中生成,通常以关键字function引导“函数声明行”,并罗列出函数与外界联系的全部“标称”输入输出宗量。
它的一般形式为
function[output1,output2,…]=functionname(input1,input2,…)
%[output1,output2,…]=functionname(input1,input2,…)Functionname
%Somecommentsthatexplainwhatthefunctiondoesgohere.
MATLABcommand1;
MATLABcommand2;
MATLABcommand3;
……
该函数的M文件名是functionname.m,在MATLAB命令窗口中可被其他M文件调用,例如,
[output1,output2]=functionname(input1,input2)
注意,MATLAB忽略了“%”后面的所有文字,因此,可以利用该符号写注释。
以“;
”结束一行可以停止输出打印,在一行的最后输入“…”可以续行,以便在下一行继续输入指令。
M函数格式是MATLAB程序设计的主流,在一般情况下,不建议使用M脚本文件格式编程。
四、编程练习
1.试用MATLAB分别绘出下列各信号的波形图。
(1)
(2)
(3)
(4)