matlab实验报告.docx

上传人:b****5 文档编号:14822400 上传时间:2023-06-27 格式:DOCX 页数:37 大小:229.55KB
下载 相关 举报
matlab实验报告.docx_第1页
第1页 / 共37页
matlab实验报告.docx_第2页
第2页 / 共37页
matlab实验报告.docx_第3页
第3页 / 共37页
matlab实验报告.docx_第4页
第4页 / 共37页
matlab实验报告.docx_第5页
第5页 / 共37页
matlab实验报告.docx_第6页
第6页 / 共37页
matlab实验报告.docx_第7页
第7页 / 共37页
matlab实验报告.docx_第8页
第8页 / 共37页
matlab实验报告.docx_第9页
第9页 / 共37页
matlab实验报告.docx_第10页
第10页 / 共37页
matlab实验报告.docx_第11页
第11页 / 共37页
matlab实验报告.docx_第12页
第12页 / 共37页
matlab实验报告.docx_第13页
第13页 / 共37页
matlab实验报告.docx_第14页
第14页 / 共37页
matlab实验报告.docx_第15页
第15页 / 共37页
matlab实验报告.docx_第16页
第16页 / 共37页
matlab实验报告.docx_第17页
第17页 / 共37页
matlab实验报告.docx_第18页
第18页 / 共37页
matlab实验报告.docx_第19页
第19页 / 共37页
matlab实验报告.docx_第20页
第20页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

matlab实验报告.docx

《matlab实验报告.docx》由会员分享,可在线阅读,更多相关《matlab实验报告.docx(37页珍藏版)》请在冰点文库上搜索。

matlab实验报告.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2