matlab实验报告.docx
《matlab实验报告.docx》由会员分享,可在线阅读,更多相关《matlab实验报告.docx(37页珍藏版)》请在冰点文库上搜索。
![matlab实验报告.docx](https://file1.bingdoc.com/fileroot1/2023-6/27/2d1f6e8e-4274-4cef-9349-4e819a70089e/2d1f6e8e-4274-4cef-9349-4e819a70089e1.gif)
matlab实验报告
实验一数组及其运算
【实验目的】
1.学习MATLAB软件的启动和退出,变量的存储和调用
2.熟悉MATLAB中关于数组及其运算的各种指令,能熟练应用数组运算解决问题
【实验内容与要求】
1.Matlab的启动与退出
Ø双击MATLAB图标,进入MATLAB命令窗口,即可输入命令,开始运算。
Ø单击File菜单中Exit,或使用命令窗口键入Exit命令退出。
2.一维数组的创建和寻访
一维数组的输入和寻访
>>b=[246810]%元素之间要用逗号或空格分开
b=
246810
>>c=2:
2:
10
c=
246810
>>d=linspace(2,10,5)
d=
246810
>>b(1:
3)
ans=
246
>>c
(2)
ans=
4
问题1:
体会以上输入方法之间的区别和联系。
若a为0~2*pi之间均匀分布的100个数据,b=[1234],各用何种方法输入较简单。
答
a=0:
2*pi/99:
2*pi
b=linspace(0,2*pi,100)
包括起点,终点,还有步长。
问题2:
体会一维数组寻访的方法。
变量与赋值
1.变量命名
在MATLAB6.5中,变量名是以字母开头,后接字母、数字或下划线的字符序列,最多63个字符。
在MATLAB中,变量名区分字母的大小写。
2.赋值语句
(1)变量=表达式
(2)表达式
其中表达式是用运算符将有关运算量连接起来的式子,其结果是一个矩阵。
预定义变量
在MATLAB工作空间中,还驻留几个由系统本身定义的变量。
例如,用pi表示圆周率π的近似值,用i,j表示虚数单位。
预定义变量有特定的含义,在使用时,应尽量避免对这些变量重新赋值。
3.二维数组的创建与寻访
>>A=[123;456;789]%行之间要用分号隔开
A=
123
456
789
>>B=A(2,3)%取出数组A的第二行,第三列元素
B=
6
>>C=A(2:
3,1:
3)%取出数组A的2,3行与1,2,3列交叉的元素
C=
456
789
>>D=A(5)
D=
5
问题3:
体会二维数组的输入方法,“全下标”标识和“单下标”标识的区别,体会以上输入的结果。
体会
矩阵的建立
在matlab中有两种建立的方法
直接输入法
最简单的建立矩阵的方法是从键盘直接输入矩阵的元素。
具体方法如下:
将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。
利用M文件建立矩阵
对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。
下面通过一个简单例子来说明如何利用M文件创建矩阵。
4.数组和矩阵的运算
>>A=[13;45];B=[-12;41];C=A*B%矩阵运算
C=
115
1613
>>D=A.*B%数组运算
D=
-16
165
问题4:
体会数组运算和矩阵运算的区别,输入A/B,结果如何?
输入A\B结果又如何?
输入A./B结果呢?
体会左除和右除的区别?
体会,下面是在网上找到的相关信息
在MATLAB中,有两种矩阵除法运算:
\和/,分别表示左除和右除。
如果A矩阵是非奇异方阵,则A\B和B/A运算可以实现。
A\B等效于A的逆左乘B矩阵,也就是inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。
对于含有标量的运算,两种除法运算的结果相同,如3/4和4\3有相同的值,都等于0.75。
又如,设a=[10.5,25],则a/5=5\a=[2.10005.0000]。
对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。
对于矩阵运算,一般A\B≠B/A。
5.标准数组生成函数
>>A=ones(1,2)%生成长度为2的全一行数组
A=
11
>>B=randn(2,3)%产生(2×3)的正态随机阵
B=
-0.43260.1253-1.1465
-1.66560.28771.1909
>>C=eye
(2)%产生(2×2)的单位阵
C=
10
01
>>D=diag(C)%取C阵的对角元素
D=
1
1
问题5:
体会标准数组生成函数的命令,熟悉生成常用数组的指令格式。
答
>>A=ones(2,3)的作用是生成2×3的全一矩阵
A=
111
111
B=randn(3,4)的作用是生成3×4的随机矩阵,他们的特点是每一次的数据不一定相等,但是每一次的数据的分布符合正态分布
>>B=randn(3,4)
B=
-0.43260.28771.18920.1746
-1.6656-1.1465-0.0376-0.1867
0.12531.19090.32730.7258
>>C=eye(3)
C=
100
010
001
>>c=[123456;789456;145632]
c=
123456
789456
145632
d=diag(c)的作用是去任何c的对角元素,不一定是单位阵
>>d=diag(c)
d=
1
8
5
通用的特殊矩阵
常用的产生通用特殊矩阵的函数有:
zeros:
产生全0矩阵(零矩阵)。
ones:
产生全1矩阵(幺矩阵)。
eye:
产生单位矩阵。
rand:
产生0~1间均匀分布的随机矩阵。
randn:
产生均值为0,方差为1的标准正态分布随机矩阵。
6.数组的操作和重组
>>A=[1350;36912;5432;2468]
A=
1350
36912
5432
2468
>>B=reshape(A,2,8)%把数组A变换成2行8列的新数组
B=
15345302
326496128
>>B=rot90(A)%数组A逆时针旋转90度
B=
01228
5936
3644
1352
>>flipud(A)%数组A进行上下翻转
ans=
2468
5432
36912
1350
问题6:
体会上述数组操作的结果。
输入fliplr(A),结果如何?
输入diag(A)结果又如何?
答:
输入fliplr(A)
>>A=[1350;36912;5432;2468]
A=
1350
36912
5432
2468
>>fliplr(A)
ans=
0531
12963
2345
8642
>>diag(A)
ans=
1
6
3
8
7.变量的存储和调用
存储
>>savedataabc%将变量a,b,c存到data.mat文件中
调用
>>loaddata%将data.mat文件中所有变量加载到工作空间
8.多维数组的创建
格式:
A=cat(n,A1,A2,….,Am).
说明:
n=1和n=2时分别构造[A1;A2]和[A1,A2],都是二维数组,而n=3时可以构造出三维数组。
>>A1=[123;456;789];A2=A1';A3=A1-A2;
>>A4=cat(3,A1,A2,A3)
A4(:
:
1)=
123
456
789
A4(:
:
2)=
147
258
369
A4(:
:
3)=
0-2-4
20-2
420
【练习和思考】
1.熟悉MATLAB的启动和退出
2.自找2-3个例子,熟悉数组的运算以及它们的各种函数值
3.自找2-3个例子,熟悉数组和矩阵的加减乘除运算
4.输入任意矩阵A,B(他们的元素个数相等)命令A(:
)和A(:
)=B会产生什么结果。
答
现在输入数据验证A(:
)的作用,
数据一
>>a=[2]
a=
2
>>a(:
)
ans=
2
>>a=[23]
a=
23
>>a(:
)
ans=
2
3
由此可知A(:
)的作用是将A中的元素做竖排,现在考察在二维数组中维数的优先级
数据三
>>a=[123;456],b=[789;632],a(:
)=b
a=
123
456
b=
789
632
a=
789
632
>>a=[123;456],b=[789;632],a=b
a=
123
456
b=
789
632
a=
789
632
实验二数据和函数的可视化
【实验目的】
1.熟悉MATLAB软件中二维绘图和三维绘图的方法
2.学习使用MATLAB图形窗功能
【实验内容与要求】
1.基本命令
格式1:
plot(X,Y)
说明:
以X,Y的对应元素为坐标绘二维图,注意,X,Y的维数要匹配。
【例1】
x=linspace(0,2*pi,100);%给出横坐标
y=sin(x);%给出纵坐标
plot(x,y);%绘制图形
在matlab中图像的处理有很大的空间,也是matlab的突出优点
可以,加颜色标注,各种标注
问题1:
当X=[1,5,3,7;3,6,8,4;9,6,1,5],Y=[2,5,7,4;6,8,4,1;8,0,4,2]时,命令plot(X,Y)画出几条线,如何画出的?
当X=[1,5,3,7],Y=[2,5,7,4;6,8,4,1;8,0,4,2]时有何规律?
答
输入X=[1,5,3,7;3,6,8,4;9,6,1,5],Y=[2,5,7,4;6,8,4,1;8,0,4,2]
输入数据X=[1,5,3,7],Y=[2,5,7,4;6,8,4,1;8,0,4,2],的三条线
格式2:
plot(Y)%若Y为m维向量,则等价于plot(X,Y),其中,X=1:
m
格式3:
plot(X1,Y1,Linespec1,X2,Y2,linespec2,…)%将按顺序分别画出由三个参数定义的Xi,Yi,Linespeci的线条,其中,参数Linespeci指明了线条的类型,标记符号和画线的颜色。
【例2】
t=0:
pi/20:
pi;
plot(t,t.*cos(t),'-.r*');
holdon
plot(exp(t/100).*sin(t-pi/2),'--mo')
plot(sin(t*pi),':
bs')
注:
holdon表示继续在当前图形上画图
2.图形修饰与控制
axissquare%将图形设置为正方形
axisequal%x,y轴单位刻度相等
title('字符串')%图形标题
axis([xmin,xmax,ymin,ymax])%x轴范围在xmin-xmax之间,y轴范围在ymin-ymax之间
xlabel('字符串')%x轴标注
ylabel('字符串')%y轴标注
text(x,y,'字符串')%在(x,y)处标注说明文字
gridon%加网格线
gridoff%消除网格线
holdon%保持当前图形
holdoff%解除holdon命令
legend('first','second',n)%对一个坐标系上的两幅图形做出图例注解
subplot(m,n,p)%将当前窗口分成m行n列区域,并指定在p区绘图
fill(x,y,'b')%将(x
(1),y
(1)),(x
(2),y
(2)),…,(x(n),y(n)),(x
(1),y
(1))围成的封闭图形填充为蓝色
【例3】
subplot(2,2,1);x=0:
pi/60:
2*pi;plot(x,cos(x));
subplot(2,2,2);x=0:
pi/60:
2*pi;plot(x,sin(x));
subplot(2,1,2);plot(x,sin(x),':
b',x,cos(x),'-r')
legend('sin(x)','cos(x)',1)
【例4】将正弦曲线0-pi/2部分与轴包围的封闭图形填充为蓝色
clf;
clear;
x=0:
pi/60:
2*pi;
y=sin(x);
x1=0:
pi/60:
pi/2;
y1=sin(x1);
plot(x,y,'-r')
holdon;
fill([x1,pi/2],[y1,0],'b')
问题2:
将上面最后一句分别改为fill(x1,y1,'b'),fill([pi/2,x1,3*pi/2],[0,y1,0],'r')结果如何?
答:
输入fill(x1,y1,'b')的图像如下
输入fill([pi/2,x1,3*pi/2],[0,y1,0],'r')的结果如下图
3.对数图形
格式:
loglog(X,Y)%对x轴pi,y轴的刻度用常用对数(以10为底)
semilogx(X,Y)%对x轴的刻度用常用对数值,而y轴为线性刻度
semilogy(X,Y)%对y轴的刻度用常用对数值,而x轴为线性刻度
【例5】
clear;
x=logspace(-1,2);
loglog(x,10*exp(x),'-s')
gridon
4.三维曲线图
格式:
plot3(X,Y,Z,S)
说明:
当X,Y,Z均为同维向量时,则plot3描出点X(i),Y(i),Z(i)依次相连的空间曲线,若X,Y均为同维矩阵,X,Y,Z每一组相应列向量为坐标画出一条曲线。
S为‘color-linestyle-marker’
【例6】绘制螺旋线
t=0:
pi/60:
10*pi;
x=sin(t);
y=cos(t);
plot3(x,y,t,'*-b')
gridon
Matlab还可以对图像进行翻转,这一点在立体图形中由很大的优点
5.三维网格图
格式:
mesh(X,Y,Z,C)%画出颜色由C指定的三维网格图
说明:
若X,Y均为向量,n=length(X),m=length(Y),Z必须满足[m,n]=size(Z),则空间中的点(X(j),Y(i),Z(i,j))为所画曲面网线的交点,X对应于Z点的列,Y对应于Z的行;若X,Y,Z均为同维矩阵,则空间中的点(X(i,j),Y(i,j),Z(i,j))为所画曲面的网线的交点:
矩阵C指定网线的颜色。
【例7】绘出带有底座的马鞍面
x=-8:
8;
y=-8:
8;
[X,Y]=meshgrid(x,y);
Z=(X.^2/4^2-Y.^2/5^2);
mesh(X,Y,Z)
6、三维曲面图
格式:
surf(X,Y,Z,C)%画出颜色由C指定的三维曲面图。
说明:
surf同mesh命令用法和使用格式相同,不同之处在于绘得的图形是一个彩色曲面而不是彩色网格。
C缺省时数据Z同时为曲面高度,也是颜色数据。
【例8】绘出带有等高线的理想气体状态方程曲面。
pv=nRT,n=2mol:
R=8.31;
n=2;
p=(1:
20)*1e5;
v=(1:
20)*1e-3;
[P,V]=meshgrid(p,v);
T=P.*V/n/R;
surf(P,V,T)
view(45,30)
【练习和思考】
1.输入x=[2,4,1,6,8];plot(x,'*-b'),体会图形特点。
2.在一幅图上画出两个周期的正弦曲线和余弦曲线,画出坐标轴,加上各种图注,并在正弦曲线(0~
/2)和横轴之间填充红色。
下面是图像
输入
clear;
x=0:
pi/60:
4*pi;
y=sin(x);z=cos(x)
x1=0:
pi/60:
pi/2;
y1=sin(x1);
plot(x,y,'-r');holdon;plot(x,z)
holdon;
fill([x1,pi/2],[y1,0],'b')
3.在一个窗口画出4幅图,分别绘制sin2x,tanx,lnx,
的图形,并加上适当的图形修饰。
4.画出如下的三维网格曲面图。
x∈{-10,10},y∈{-8,8},z=
5.绘出函数
在[-2,2],[-2,2]上的三维曲面图。
实验三程序编制
【实验目的】
1.熟悉MATLAB软件中关系运算和逻辑运算
2.熟悉MATLAB软件M函数和M文件编制办法
3.练习程序结构与控制,学会编写一般性程序
【实验内容与要求】
1.关系运算和逻辑运算
关系运算符主要用来比较数与数、矩阵与矩阵之间的大小,并返回真(用"1"表示)、假(用"0"表示)。
基本的关系运算符主要有6个:
>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、==(等于)、~=(不等于)。
【例1】
2<4;%小于运算,结果为1
4>=7;%大于等于运算,结果为0
4==3;%等于运算,结果为0,注意,这里的“等于”不能输入“=”
4~=3;%不等于运算,结果为1
逻辑运算与(&)、或(|)、非(~)、异或(xor),变量中非零数逻辑量为真”,0的逻辑量为“假”,逻辑运算结果以“1”表示“真”,以“0”表示假”。
【例2】
a=3&0;%"与"运算,两个真值间的结果为1,否则为0,所以这里a=0
a=3|0;%"或"运算,有一个真值或两个结果为1,否则为0,所以这里a=1
a=xor(3,5);%"异或"运算,只有一个真值结果为1,否则为0,所以这里a=0
a=~4;%"非"运算,真变假,假变真,所以这里a=0
问题1:
输入a=1:
5,b=3:
7,t1=(a-2>3),t2=(a>3)-b,t3=~t1-2,t4=(a>1)&(b<6),结果如何?
从中体会逻辑操作符、计算操作符的优先等级和计算先后次序。
答
输入
>>a=1:
5,b=3:
7,t1=(a-2>3),t2=(a>3)-b,t3=~t1-2,t4=(a>1)&(b<6)
a=
12345
b=
34567
t1=
00000
t2=
-3-4-5-5-6
t3=
-1-1-1-1-1
t4=
01100
关系运算符的运算法则为:
(1)当两个比较量是标量时,直接比较两数的大小。
若关系成立,关系表达式结果为1,否则为0。
(2)当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。
最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。
(3)当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。
最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。
2.M函数文件
sin(x),sum(A)都是MATLAB内嵌的库函数,可以反复调用,十分方便。
用户在实际工作中,往往需要编制自己的函数,以实现计算中的参数传递和函数的反复调用,建立函数文件的方法如下。
格式:
function[y1,y2,…]=ff(x1,x2,…)。
说明:
ff是函数名,x1,x2是输入变量,y1,y2是输出变量。
【例3】已知一作匀速直线运动的物体的初速度V0、加速度为a,求任意时刻的速度和位移。
建立文件名为ff.m的函数文件:
function[v,s]=ff(v0,a,t)%定义函数名和输入、输出
v=v0+a*t;;%给出输入、输出变量间关系
s=v0*t+a*t^2/2;
在命令窗口调用ff函数:
[v,s]=ff(2,4,5)
v=22
s=60
为了存储M函数,反复可以调用,通过编制一个M函数文件来实现,单击MATLAB中的File→New→M-File即进入文本编辑窗口,输入以上程序并保存(用自动给的文件名)即可。
注意:
①输入变量用()括起来,输出变量用[]括起来。
②函数名和文件名必须相同!
函数名开头必须用字母,区分大小写。
③程序开头必须以function开始,第二行以后可加入注释行或运算语句。
④M函数文件可以调用其它一般M文件,M函数文件可以反复调用自己。
⑤用内联函数命令inline也可以实现M函数文件的大部分功能。
【例4】
fu=inline('2*x^2+3*x+1')%默认x是输入参量
fv=inline('v0+a*t,'a','t','v0');%建立内联函数fv,其中v0,a,t是变量
v=fv(4,5,2)%求a=4,t=5,v0=2时函数fv的值
fu=Inlinefunction:
fu(x)=2*x^2+3*x+1
fv=Inlinefunction
V(a,t,v0)=v0+a*t
v=22
3.M文件
单击MATLAB中的File→New→M-File即进入文本编辑窗口(或用桌面快捷键),输入程序即可,开头可任意输入MATLAB语句;输完程序后,单击保存按钮,在对话框中输入文件名,文件名开头必须是字母。
运行M文件有以下几种办法:
在命令窗口输入文件名并回车;单击File→Open→*.m(文件名),打开该文件编辑窗口,再单击Tool→Run(或Debug→Run)即可运行;单击File→RunScript,输入文件名,再单击OK按钮即可。
4.if条件语句
格式:
(1)if表达式
执行语句
end
(2)if表达式
执行语句1
else
执行语句2
end
(3)if表达式1
执行语句1
elseif表达式2
执行语句2
else
执行语句3
end
注意:
1)中表达式值非0时,执行下面语句,否则跳过,执行end后面语句。
2)中表达式值非0时,执行语句1,否则执行语句2。
3)中表达式1值非0时,执行语句1并终止if语句,否则计算表达式2的值,以此类推。
【例5】比较数的大小。
解:
编一个M文件。
a=3;b=6;
ifa>b%条件表达式1
max=a;%命令串1
elseifa==b%条件表达式2