实验01熟悉Matlab环境及基本操作.docx
《实验01熟悉Matlab环境及基本操作.docx》由会员分享,可在线阅读,更多相关《实验01熟悉Matlab环境及基本操作.docx(31页珍藏版)》请在冰点文库上搜索。
实验01熟悉Matlab环境及基本操作
实验1熟悉Matlab环境及基本操作
实验目的:
1.熟悉Matlab环境,掌握Matlab的主要窗口及功能;
2.学会Matlab的帮助使用;
3.掌握向量、矩阵的定义、生成方法和基本运算;
4.掌握Matlab的基本符号运算;
5.掌握Matlab中的二维图形的绘制和控制。
实验内容:
1.启动Matlab,说明主窗口、命令窗口、当前目录窗口、工作空间窗口、历史窗口、图形窗口、M文件编辑器窗口的功能。
2.实例操作Matlab的帮助使用。
3.实例操作向量、矩阵的定义、生成方法和基本运算。
4.实例操作Matlab的基本符号运算。
5.实例操作Matlab中的二维图形绘制和控制。
实验仪器与软件:
1.CPU主频在2GHz以上,内存在512Mb以上的PC;
2.Matlab2010a及以上版本。
实验讲评:
实验成绩:
评阅教师:
2011年月日
实验1熟悉Matlab环境及基本操作
一、Matlab环境及主要窗口的功能
运行Matlab安装目录下的matlab.exe文件可启动Matlab环境,其默认布局如下图:
其中
1、主窗口的功能是:
包含MATLAB的其他窗口,不进行任何计算任务的操作,只用来进行一些整体的环境参数设置。
它主要包含6个下拉菜单和10个按钮控件.
2.命令窗口的功能是:
在命令窗口中,“>>”为运算提示符,在运算提示符后面可以输入程序语句,按回车后可以得到相应的执行结果。
3、历史窗口:
历史窗口显示命令窗口中所有执行过的命令。
利用该窗口,一方面可以查看曾经执行过的命令;另一方面,可以重复利用原来输入的命令行。
可以从命令历史窗口中直接通过双击某个命令行来执行该命令行,也可以通过拖拉或复制操作将命令行复制到命令窗口后再回车执行。
4、当前目录窗口:
显示当前目录下所有文件的文件名、文件类型和最后修改的时间,同时还提供搜索功能。
在该窗口下,还可以改变当前目录。
5、发行说明窗口:
该窗口显示MATLAB总文件包和已安装的工具箱的帮助、演示、GUI工具和产品主页等4个方面的内容。
6、工作空间窗口:
该窗口显示所有目前内存中的MATLAB变量的变量名、数学结构、字节数以及类型,不同的变量类型分别对应不同的变量名图标。
对于数组变量,可双击其图标,显示数组编辑器,相应变量的行和列上的数据均显示在电子表格中,用户可以进行编辑。
7、M文件编译器窗口:
如果要解决一个具体的问题,要求执行的命令数比较多,或要改变变量的值后重新执行一系列的命令时,在命令窗口的编辑区中键入命令,逐行执行,就非常麻烦。
出现以上情况我们就可以进入程序编辑器编写M文件。
8、图形窗口:
利用图形窗口菜单和工具栏中的选项,可以对图形进行线型、颜色、标记三维视图、光照和坐标轴等的设置。
9、GUI(GraphacalUserInterface)窗口:
能够快速、方便地实现面向对象编程,生c成操作友好的图形用户界面程序。
二、Matlab的帮助使用
Matlab提供的联机帮助系统使用户在没有任何资料的情况下就能掌握它的使用和基本操作,作为Matlab的用户应熟练掌握其联机帮助系统的使用,下面是Matlab联机帮助系统的使用方法。
1、単击主窗口的绿色问号按钮即可进入帮助系统寻求帮助。
2、在命令窗口输入help,按回车键即可寻求帮助。
3、lookfor命令,主要是返回包含指定关键词的那些项。
三、向量的定义、生成和基本运算
1.向量的生成
(1)逐个元素直接输入
向量元素需要有“[]”括起来,元素之间可以用空格、逗号或分号分隔。
用空格和逗号分隔生成行向量,用分号分隔生成列向量。
例:
a=[1236875.3]
b=[4;5;8;0;6]
(2)利用冒号表达式生成
通过设置“步长(step)”,生成一维行向量,通用格式为:
x=x0:
step:
xn。
x0表示向量的首元素值,xn表示尾元素数值限。
step(步长)表示从第个元素开始,每一个元素与前一个元素的差值.当step=1时,可省略此项的输入,系统默认为1,在这种情况下直接写成x=x0:
xn即可。
例:
x=0:
3:
9
y=1:
6
z=1:
0.5:
4
(3)定数线性采样生成
设定总点数n下,均匀采样生成一维行向量。
通用格式为x=linspace(a,b,n)。
a,b分别是生成向量的第一个和最后一个元素,n是采样总点数。
该指令生成的数组与a:
(a-b)/(n-1):
b生成的数组等价。
当n缺省时,自动生成100维的行向量。
例:
clear
x=linspace(-4,4,11)
y=-4:
8/10:
4
z=linspace(-5,3)
(4)定数对数采样生成向量
设定总点数n下,经“常用对数”均匀采样生成一维行向量。
通用格式为x=logspace(a,b,n)。
生成数组的第一个元素值为10a,最后一个元素值为10b,n为采样总点数,当n缺省时,自动生成50维的行向量。
例:
clear%清除工作空间中的所有变量.
x=logspace(1,4,4)
y=1:
(4-1)/(4-1):
5
xx=10.^y
z=logspace(1,4)
2.向量元素的引用
格式为:
向量名(下标范围或元素所满足的条件)。
例:
clear
rand('state',0)%把均匀分布为随机发生器置为初始状态
x=rand(1,5)%产生(2×5)的均匀分布随机数组
x
(2)%引用数组x的第二个元素
y=x([125])%引用数组x的第一、二、五个元素
z=x(1:
2)%引用数组x的前二个元素
w=x(2:
end)%引用数组x的从第三个元素以后的元素
v=x(3:
-1:
1)%由数组x的前3个元素倒排构成的了数组
u=x(find(x>0.5))%数组x中大于0.5的元素构成的子数组
t=x([12344321])%重复引用数组x中的元素构成的数组
3.向量与标量、向量与向量的运算
(1)四则运算(+、-、*、/(右除)、\、.*、./、.\)
标量a与向量x进行四则运算是a分别与x中的每个元素进行四则运算并生一个与x等长的向量。
等长的两个向量才能进行四则运算,向量x与y进行四则运算是这两个向量的对应元素分别进行四则运算并生成一个与它们等长的向量。
例如:
clc
x=[1236-45]
y=2*x-2
z=x/2+1
w=2\x%2\x=2-1*x,不能进行"2/x"运算
u=x+y
v=x.*y
t=x./y
s=x.\y
(2)幂运算(.^)
向量x与标量a的幂运算是对x的每一个元素施行幂运算,向量x与向量y的幂运算是元素对元素的幂运算。
例如:
clc
x=[1236-45]
y=x.^2
y1=2.^x
z=x.^[1220-10]
(3)指数运算、对数运算和开方运算
在MATLAB中,数组的运算实质上是数组内部每个元素的运算,因此,数组的指数运算(exp)、对数运算(log)与开方运算(sqrt)等与标量运算完全一样。
例如:
clear
x=[123645]
y=exp(x)%施行的是以e为底的指数运算
z=log(x)%施行的是以e为底的对数运算
v=sqrt(x)
u=sin(x)
四、矩阵的定义、生成和基本运算
1.矩阵的创建
(1)逐个元素直接输入把矩阵元素需用“[]”括起来,同行元素之间用空格或逗号分隔,行与行之间用分号或回车符分隔。
矩阵元素可以为运算表达式,没有任何元素的矩阵称为空矩阵。
例如:
A=[123;321;456]
B=[sin(pi/3),cos(pi/4);log(9),tanh(6)]
T=[]
(2)编写M文件创建大矩阵
针对于大型的矩阵,可通过编写脚本式M文件,然后运行该文件来创建。
例如:
编写一名为Example11.m的M文件,内容如下。
%Example11.m
%编写一M文件创建矩阵的示例文件。
exm=[1233462248936;0976658645;2950512436;143854259178;45954149245231]
(3)通过函数创建特殊矩阵
%Example11.m
%编写一M文件,通过函数创建特殊矩阵的示例文件。
%由函数zeros创建全0矩阵。
N=5;M=3;A=[123456;235617;444258];
A1=zeros(N)%生成N×N阶全0阵。
B1=zeros(M,N)%生成M×N阶全0阵。
C1=zeros(size(A))%生成与A同阶的全0阵。
%通过这种方式可创建全大型稀疏矩阵。
即先创始全0矩阵,再通过矩阵编辑器给非0元素赋值。
%由函数ones创建全1矩阵。
A2=ones(N)%生成N×N阶全1阵。
B2=ones(M,N)%生成M×N阶全1阵。
C2=ones(size(A))%生成与A同阶的全1阵。
%由函数eye创建单位矩阵。
A2=eye(N)%生成N×N阶单位矩阵。
B2=eye(M,N)%生成M×N阶单位矩阵。
C2=eye(size(A))%生成与A同阶单位矩阵。
%由函数rand或randn创建随机矩阵。
A3=rand(N)%生成N×N阶均匀分布的随机阵,元素值在(0.0,1.0)区间内。
B3=rand(M,N)%生成M×N阶均匀分布的随机阵。
C3=rand(size(A))%生成与A同阶阶均匀分布的随机阵。
H=hilb(N)%生成N×N阶Hilbert矩阵。
2.矩阵元素的引用
(1)相对位置引用格式:
变量名(行标,列标)
(2)绝对位置引用格式:
变量名(绝对位置索引)
例:
clear
rand('state',0)%把均匀分布伪随机发生器置为初始状态
A=rand(5,4)%产生(4×3)的均匀分布随机数组
A(4,3)%引用矩阵A的第三行第二列的元素
A(4)%引用矩阵A的第五个元素
3.矩阵元素的抽取
(1)抽取行
clear
rand('state',0)%把均匀分布伪随机发生器置为初始状态
A=rand(4,3)%产生(4×3)的均匀分布随机数组
A(3,:
)%抽取矩阵A的第三行
A([13],:
)%抽取矩阵A的第一行和第三行
B=A([31],:
)%抽取矩阵A的第三行和第一行赋值给B
C=A(3:
end,:
)%抽取矩阵A的第三行至最后一行赋值给B
(2)抽取列
clear
rand('state',0)%把均匀分布伪随机发生器置为初始状态
A=rand(4,3)%产生(4×3)的均匀分布随机数组
A(:
3)%抽取矩阵A的第三列
A(:
[13])%抽取矩阵A的第一列和第三列
B=A(:
[31])%抽取矩阵A的第三列和第一列赋值给B
C=A(:
3:
end)%抽取矩阵A的第三行至最后一行赋值给B
(3)抽取块
clear
rand('state',0)%把均匀分布伪随机发生器置为初始状态
A=rand(4,3)%产生(4×3)的均匀分布随机数组
B=A([12],[23])%抽取矩阵A的第一、二行与第二、三列交叉的元素赋值给B
(4)抽取矩阵对角线上的元素
clear
rand('state',0)%把均匀分布伪随机发生器置为初始状态
A=rand(5)%产生(4×4)的均匀分布随机数组
V=diag(A)%抽取矩阵A的主对角线上的元素赋值给向量V
D=diag(V)%以向量V为对角线元素生成对角矩阵
D1=diag(V,1)
D2=diag(V,-1)
U=diag(A,1)%抽取矩阵A的主对角线上方第一条对角线的元素赋值给向量U
L=diag(A,-1)%抽取矩阵A的主对角线下方第一条对角线的元素赋值给向量L
(5)抽取矩阵上三角部分和下三角部分
clear
rand('state',0)%把均匀分布伪随机发生器置为初始状态
A=rand(4)%产生(4×4)的均匀分布随机数组
U=triu(A,1)%从矩阵A的主对角线上方第一条对角线开始抽取A的上三角部分
U=triu(A,-1)%从矩阵A的主对角线下方第一条对角线开始抽取A的上三角部分
L1=tril(A,1)
L2=tril(A,-1)
4.矩阵的基本数学运算
(1)矩阵的四则运算(+-*/\)与线性代数理论一致,其中,A\B=inv(A)*B=A^-1*B。
clear
A=[1234;51-47]
B=[-13;41;60;79]
C=A+B'
D=A*B
E=B/D
F=D\A
(2)矩阵与常数间的运算(+-*/\^)同线性代数理论一致,需注注的是,当进行数除时,常数通常只能做除数。
clear
A=[1234;51-47]
C=A+2
D=A*2
E=A/2%不能进行“2/A”的运算
F=2\A%不能进行“A\2”的运算
G=A([12],[12])^2
(3)矩阵的数组运算(.+.-.*./.\.^)是指同维数组间对应元素之间的加、减、乘、除和幂运算,其中“.+”和“.-”分别与“+”和“-”相同,所以,“.+”和“.-”一般不用。
clear
A=[1234;51-47]
B=A+2
C=A.*B
D=A./B
E=B.\A
F=A.^2
(4)矩阵的基本初等运算
clear
A=[1234;25-48;-1341;6579]
A(2,:
)=A(2,:
)*2%2乘A的第二行
A(1,:
)=A(1,:
)+A(2,:
)%2乘A的第二行,加到A的第一行
A([12],:
)=A([21],:
)%交换A的第一行和第二行
(5)矩阵的逆运算
clear
A=[1234;25-48;-1341;6579]
B=inv(A)
(6)矩阵的行列式运算
clear
A=[1234;25-48;-1341;6579]
B=det(A)
(7)矩阵的指数运算
clear
A=[1230;21-46;-1341;6079]
B=expm(A)%由Pade近似计算矩阵指数,也可以用函数expm1
%由Taylor级数计算矩阵指数用expm2
%由特征值法计算矩阵指数expm3
(8)矩阵的对数运算
clear
A=[1234;25-48;-1341;6579]
B=expm(A)
C=logm(B)
D1=logm(A)
D2=log(A)
(9)矩阵的开方运算
clear
A=[1232;2146;1341;6479]
B=A^2
C=sqrtm(B)
B1=sqrtm(A)
B2=sqrt(A)
(10)矩阵的其他基本函数运算可以在命令窗口中输入“helpmatfun”查询。
5.矩阵的一些特殊操作
(1)变维方法:
“:
”和函数“reshape”。
reshape(A,M,N)%将已知矩阵变维成M×N阶矩阵
reshape(A,M,N,p,…)%将已知矩阵变维成M×N×P×…阶矩阵
clear
a=1:
12;
A=reshape(a,3,4)
c=zeros(4,3);
c(:
)=a(:
)%按绝对位置,逐个用a的元素值给c元素赋值,a和c的结构可以不一样,但总的元素个数要相等。
(2)矩阵的变向。
clear
a=1:
12;
A=reshape(a,3,4)
k=3;dim=1;
A1=rot90(A)%将A逆时针方向旋转90o
A2=rot90(A,k)%将A逆时针方向旋转(90*k)o,k可为正值,也可为负值。
A3=fliplr(A)%将A左右翻转
A4=flipud(A)%将A上下翻转
A5=flipdim(A,dim)%dim的值为1或2,当dim=1时,对行翻转,dim=2时,对列翻转
(3)矩阵的扩展与收缩。
clear
a=1:
12;
A=reshape(a,3,4)
B=eye(3,2)
C=ones(2,6)
D=[AB;C]%利用小矩阵的组合来生成大矩阵
D(6:
10,9:
10)=4%利用对矩阵标识块的赋值命令生成大矩阵
D(:
3:
end)=[]%将矩阵标识块置为空以收缩矩阵
五、Matlab的基本符号运算
1.多项式的表示
对于多项式
用行向量
表示,把多项式问题转化为向量问题。
2.多项式的创建
①直接输入系数向量
由于在MATLAB中的多项式是以向量形式储存的,因此,直接输入多项式对应的向量,MATLAB会自动将向量元素按降幂顺序分配给各项系数值,向量可以为行向量,也可以是列向量。
例如:
输入多项式:
x^3-5x^2+6*x-33
p=[1-56-33];
poly2sym(p)
%poly2sym为符号工具箱中的函数,可以将多项式向量表示为符号形式。
(2)通过特征多项式创建
也就是从矩阵求其特征多项式获得。
例如:
A=[123;321;985]
p=poly(A)
poly2sym(p)
%由特征多项式生成的多项式的首项系数一定是1,n阶矩阵一般产生n次多项式。
(3)由多项式的根创建多项式
root=[-5-3+4i-3-4i];
p=poly(root)
poly2sym(p)
3.多项式运算
(1)求多项式的值
一般调用函数polyval进行计算,例如:
p=[1-1255125];
b=[12;03];
polyval(p,b)
(2)求多项式的根
求多项式的根可以有两种方法,一种是直接调用函数roots求解多项式的所有根;另一种是通过建立多项式的伴随矩阵再求其特征值的方法得到多项式的所有根。
两种方法求得的根是相等的。
例如:
p=[1-1255125]
roots(p)
P=compan(p)
eig(p)
3.多项式的乘除法运算
多项式的乘法由函数conv来实现,除法则由函数deconv来实现,例如:
p=[2-56-19];
poly2sym(p)
d=[3-90-18];
poly2sym(d)
pd=conv(p,d)
poly2sym(pd)
p1=deconv(pd,d)
4.多项式的微分
多项式的微分由函数polyder来实现,例如:
p=[2-56-19];
poly2sym(p)
Dp=polyder(p)
poly2sym(Dp)
5.多项式拟合
多项式拟合的实现,一面可以由矩阵的除法求解超定方程来进行;另一方面可调用函数polyfit来实现,调用方法如下:
[p,s]=polyfit(X,Y,n)
其中,X、Y为拟合数据,n为拟合多项式的次,p为拟合多项式的系数向量,s为拟合多项式系数向量的结构信息,例如:
x=0:
pi/20:
pi/3;
y=sin(x);
p=polyfit(x,y,5)
x1=0:
pi/30:
pi*2;
y1=sin(x1);
y2=polyval(p,x1);
plot(x1,y1,'b-',x1,y2,'r*')
legend('原曲线','拟合曲线')
axis([07-1.24])
由于拟合是在[0,π/3]上进行的,故所得曲线在此区间与原曲线拟合很好,而在区间外,两曲线差别就很大。
六、Matlab中的二维图形绘制和控制
1.当plot函数仅有一个输入变量时
调用格式:
plot(y)
(1)如果y为实向量,则以y的索引作为点的横坐标(也即是x轴)、以y的各元素作为点的纵坐标来绘制图形。
例1:
x=1:
8;
y=sin(x).*exp(x)
plot(y,'*');
例2:
x=1:
8;
y=cos(x).*exp(x)
plot(y,'*');
(2)如果y为复数向量,则将以该向量的实部作为点的横坐标、虚部作为点的纵坐标来绘制图形。
但须注意,当输入变量不止一个时,plot函数将忽略变量的虚部而直接绘制各参数实部间的图形。
例如:
clear;clc;
x=0:
0.05:
10*pi;
y=(cos(x)+i*sin(x)).*exp(-0.05*x)+0.01*x;
plot(y);
%同于plot(real(y),imag(y));
xlabel('Re(y)');ylabel('Im(y)');
%尝试命令:
plot(x,y);
2.当plot函数有两个输入变量时
调用格式:
plot(x,y)
该方式在实际中最为常用,它将以第一个变量作为点的横坐标、第二变量作为点的纵坐标来绘制图形。
例如:
clear;clc;
x=0:
0.01:
2*pi;
y=sin(x);
plot(x,y);
在使用该方式调用函数plot时,当两个输入变量x和y同为向量时,它们的维数必须相同,且必须同为行向量或列向量;当两个输入变量x和y是同阶的矩阵时,将按矩阵的行或列进行操作,其中,y可以包含多个符合要求的向量,这时将在同一幅图中绘出所有图形。
例如:
clear;
clc;
x=0:
0.01:
2*pi;
y=[sin(x'),cos(x'),];
plot(x',y);%同于plot([x',x'],y);
从图上可以看出,MATLAB已自动将一幅图中的不同曲线绘制成不同的颜色,以进行简单的区别。
3.当plot函数有三个输入参数时
调用格式:
plot(x,y,s)
该方式中的第三个参数s为图形显示属性的设置项。
它可以是图形颜色、形状等。
常见的MATLAB语言中的图形设置选项表
选项
说明
选项
说明
-
实线
。
点
:
点线
o
圆
-.
点划线
x
x符号
--
虚线
+
+号
y
黄色
*
星号
m
紫色
s
方形
c
青色
d
菱形
r
红色
v
下三角
g
绿色
^
上三角
b
蓝色
<
左三角
w
白色
>
右三角
k
黑色
p
正五边形
应用上述符号的不同组合可以为图形设置不同的线型、颜色及标识。
在调用时,选项应置于单引号内以表明为图形设置属性,当多于一个选项时,各选项直接相连,不需要任何分隔符。
例如:
clear;
clc;
x=0:
0.1:
3*pi;
y=sin(x);
z=cos(x);
plot(x,y,'--p',x,z,'-.rs');
1.特殊坐标系的二维图形函数
(1)半对数坐标图
semilogx函数:
对x轴按对数比例绘数据图,其他与plot函数类似。
例如:
y=0:
0.1:
1;
semilogx(y,'rv');
%令x轴为以10为底的对数比例(即横坐标轴按照相等的指数变化来增加,每个单位为10)、y轴为线性比例绘数据图(也即是与plot函数类似),当y为实数向量时,则绘制y的元素与它们的指数之间的数据图又如下。