信号处理软件实验指导书7.docx

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

信号处理软件实验指导书7.docx

《信号处理软件实验指导书7.docx》由会员分享,可在线阅读,更多相关《信号处理软件实验指导书7.docx(74页珍藏版)》请在冰点文库上搜索。

信号处理软件实验指导书7.docx

信号处理软件实验指导书7

 

《信号处理软件》

实验指导书

 

河北工业大学信息工程学院

信号处理软件课程组

2010年8月

前言

MATLAB是一个为科学和工程计算而专门设计的高级交互式软件包,以负数矩阵作为基本编程单元,语句简单,编程效率高,具有强大的会与功能,并且提供了许多面向应用问题求解的工具箱函数,易扩展。

MATLAB与科学计算课程主要介绍矩阵和数组、字符串、元胞数组、结构、二维绘图、三维绘图、曲线拟合、数据插值等内容,通过上机实验进一步掌握这些知识在MATLAB的运用,并能够根据已知条件灵活运用MATLAB的各项功能,实现数值分析与工程计算。

目录

 

实验一数组构建与数组运算------------------------------------------------------------------------4

实验二符号对象的创建及符号计算---------------------------------------------------------------12

实验三二维、三维绘图及函数可视化--------------------------------------------------------------26

实验四数值计算与MATLAB编程基础-----------------------------------------------------------34

实验五字符串、元胞数组和结构数组--------------------------------------------------------------37

 

实验一数值构建与数组运算

一、实验目的

1.熟悉MATLAB主界面,并学会简单的菜单操作。

2.学会简单的矩阵输入

3.掌握矩阵和数组的基本运算

二、实验内容

(一)熟悉简单的矩阵输入

1、从屏幕上输入矩阵A=[123;456;789]或A=[1,2,3;4,5,6;7,8,9]  观察输出结果。

2、试用回车代替分号,观察输出结果。

3、输入矩阵B=[9,8,7;6,5,4;3,2,1],C=[4,5,6;7,8,9;1,2,3],键入A B C观察结果

4、选择File——new菜单中的M-file,输入B=[9,8,7;6,5,4;3,2,1],保存为B.M文件,退出编辑环境。

此时在工作环境中使用B命令就可调出B矩阵。

[注]4.2版的MATLAB不能直接存为.m文件,而存为.txt文件,需在DOS下改为M文件,即在工作环境下键入rename  B.txt  B.m既可。

5、再试着输入一些矩阵,矩阵中的元素可为任意表达式,但注意矩阵中各行各列的元素个数需分别相等,否则会给出出错信息。

6、输入who和whos观察结果,了解其作用。

(二)矩阵的创建

1、加、减运算

运算符:

“+”和“-”分别为加、减运算符。

运算规则:

对应元素相加、减,即按线性代数中矩阵的“十”、“一”运算进行。

例2-1在Matlab编辑器中建立m文件:

LX0701.m

A=[1,1,1;1,2,3;1,3,6]

B=[8,1,6;3,5,7;4,9,2]

A+B=A+B

A-B=A-B

在Matlab命令窗口建入LX0701,则

结果显示:

A+B=

927

4710

5128

A-B=

-70-5

-2-3-4

-3-64

2、乘法

运算符:

*

运算规则:

按线性代数中矩阵乘法运算进行,即放在前面的矩阵的各行元素,分别与放在后面的矩阵的各列元素对应相乘并相加。

(1)两个矩阵相乘

例2-2在Mtalab编辑器中建立M文件:

LX0702.m

X=[2345

1221];

Y=[011

110

001

100];

Z=X*Y

存盘

在命令行中建入LX0702,回车后显示:

Z=

856

333

(2)矩阵的数乘:

数乘矩阵

上例中:

a=2*X

则显示:

a=

46810

2442

(3)向量的点乘(内积):

维数相同的两个向量的点乘。

命令:

dot向量点乘函数

例:

X=[-102];

Y=[-2-11];

Z=dot(X,Y)

则显示:

Z=

4

还可用另一种算法:

sum(X.*Y)

ans=

4

(4)向量叉乘

在数学上,两向量的叉乘是一个过两相交向量的交点且垂直于两向量所在平面的向量。

在Matlab中,用函数cross实现。

命令cross向量叉乘函数

例2-3计算垂直于向量(1,2,3)和(4,5,6)的向量。

在Mtalab编辑器中建立M文件:

LX0703.m

a=[123];

b=[456];

c=cross(a,b)

结果显示:

c=

-36-3

可得垂直于向量(1,2,3)和(4,5,6)的向量为±(-3,6,-3)

(5)混合积

混合积由以上两函数实现:

例3-4计算向量a=(1,2,3)、b=(4,5,6)和c=(-3,6,-3)的混合积

在Matlab编辑器中建立M文件:

LX0704.m

a=[123];b=[456];c=[-36-3];

x=dot(a,cross(b,c))

结果显示:

x=

54

注意:

先叉乘后点乘,顺序不可颠倒。

3、矩阵的除法

Matlab提供了两种除法运算:

左除(\)和右除(/)。

一般情况下,x=a\b是方程a*x=b的解,而x=b/a是方程x*a=b的解

例2-4:

a=[123;426;749]

b=[4;1;2];

x=a\b

则显示:

x=

-1.5000

2.0000

0.5000

如果a为非奇异矩阵,则a\b和b/a可通过a的逆矩阵与b阵得到:

a\b=inv(a)*b

b/a=b*inv(a)

4、矩阵乘方

运算符:

^

运算规则:

(1)当A为方阵,p为大于0的整数时,A^P表示A的P次方,即A自乘P次;p为小于0的整数时,A^P表示A-1的P次方。

(2)当A为方阵,p为非整数时,则

其中V为A的特征向量,

为特征值矩阵

5、矩阵的转置

运算符:

运算规则:

与线性代数中矩阵的转置相同。

6、矩阵的逆矩阵

例2-5求

的逆矩阵

方法一:

在Matlab编辑器中建立M文件:

LX07051.m

A=[123;221;343];

inv(A)或A^(-1)

则结果显示为

ans=

1.00003.0000-2.0000

-1.5000-3.00002.5000

1.00001.0000-1.0000

方法二:

由增广矩阵

进行初等行变换

在Matlab编辑器中建立M文件:

LX07052.m

B=[1,2,3,1,0,0;2,2,1,0,1,0;3,4,3,0,0,1];

C=rref(B)%化行最简形

X=C(:

4:

6)

在Matlab命令窗口建入LX07052,则显示结果如下:

C=

1.0000001.00003.0000-2.0000

01.00000-1.5000-3.00002.5000

001.00001.00001.0000-1.0000

X=

1.00003.0000-2.0000

-1.5000-3.00002.5000

1.00001.0000-1.0000

这就是A的逆矩阵。

7、方阵的行列式

命令:

det计算行列式的值

例2-6计算上例中A的行列式的值

在Matlab编辑器中建立M文件:

LX0706.m

A=[123;221;343];

D=det(A)

则结果显示为

D=

2

(三)线性方程组的求解

我们将线性方程的求解分为两类:

一类是方程组求唯一解或求特解,另一类是方程组求无穷解即通解。

可以通过系数矩阵的秩来判断:

若系数矩阵的秩r=n(n为方程组中未知变量的个数),则有唯一解

若系数矩阵的秩r

线性方程组的无穷解=对应齐次方程组的通解+非齐次方程组的一个特解;其特解的求法属于解的第一类问题,通解部分属第二类问题。

这类问题的求法分为两类:

一类主要用于解低阶稠密矩阵——直接法;另一类是解大型稀疏矩阵——迭代法。

1、利用矩阵除法求线性方程组的特解(或一个解)

方程:

AX=b

解法:

X=A\b

例4-1求方程组

的解

解:

在Matlab编辑器中建立M文件:

LX0716.m

A=[56000

15600

01560

00156

00015];

B=[10001]';

R_A=rank(A)%求秩

X=A\B%求解

运行后结果如下

R_A=

5

X=

2.2662

-1.7218

1.0571

-0.5940

0.3188

这就是方程组的解。

例4-2求方程组

的一个特解

解:

在Matlab编辑器中建立M文件:

LX0717.m

A=[11-3-1;3-1-34;15-9-8];

B=[140]';

X=A\B

X=

0

0

-0.5333

0.6000

2、利用矩阵的LU、QR和cholesky分解求方程组的解

(1)LU分解:

LU分解又称Gauss消去分解,可把任意方阵分解为下三角矩阵的基本变换形式(行交换)和上三角矩阵的乘积。

即A=LU,L为下三角阵,U为上三角阵。

则:

A*X=b变成L*U*X=b

∴X=U\(L\b)这样可以大提高运算速度。

命令[L,U]=lu(A)

例4-3求方程组

的一个特解

在Matlab编辑器中建立M文件:

LX0718.m

A=[42-1;3-12;1130];

B=[2108]';

D=det(A)

[L,U]=lu(A)

X=U\(L\B)

在Matlab命令窗口建入LX0718,回车后显示结果如下:

D=

0

L=

0.3636-0.50001.0000

0.27271.00000

1.000000

U=

11.00003.00000

0-1.81822.0000

000.0000

Warning:

Matrixisclosetosingularorbadlyscaled.

Resultsmaybeinaccurate.RCOND=2.018587e-017.

>InD:

\Matlab\pujun\lx0720.matline4

X=

1.0e+016*

-0.4053

1.4862

1.3511

说明:

结果中的警告是由于系数行列式为零产生的。

可以通过A*X验证其正确性。

3.Cholesky分解

若A为对称正定矩阵,则Cholesky分解可将矩阵A分解成上三角矩阵和其转置的乘积,即:

其中R为上三角阵。

方程A*X=b变成

所以

命令R=chol(A)

3.QR分解

对于任何长方矩阵A,都可以进行QR分解,其中Q为正交矩阵,R为上三角矩阵的初等变换形式,即:

A=QR

方程A*X=b变形成QRX=b

所以X=R\(Q\b)

命令[Q,R]=qr(A)

上例中[Q,R]=qr(A)

X=R\(Q\B)

说明:

这三种分解,在求解大型方程组时很有用。

其优点是运算速度快、可以节省磁盘空间、节省内存。

(四)特征值与特征向量

工程技术中的一些问题,如振动问题和稳定性问题,常归结为求一个方阵的特征值和特征向量。

设A为n阶方阵,如果数入和n维列向量x使得关系式

成立,则称

为方阵A的特征值,非零向量x称为A对应于特征值入的特征向量。

在Matlab中,用如下几种调用格式来求A的特征值和特征向量。

1.d=eig(A)%d为矩阵A的特征值排成的向量

2.[V,D]=eig(A)%D为A的特征值对角阵,V的列向量为对应特征值的特征向量(且为单位向量)

3.[V,D]=eig(A,

)%当A中有小到和截断误差相当的元素时,用nobalance选项,其作用是减少计算误差

求矩阵

的特征值和特征向量

解:

在Matlab编辑器中建立M文件:

LX0722.m

A=[-211;020;-413];

[V,D]=eig(A)

运行后结果显示:

V=

-0.7071-0.24250.3015

000.9045

-0.7071-0.97010.3015

D=

-100

020

002

即:

特征值-1对应特征向量(-0.70710-0.7071)T

特征值2对应特征向量(-0.24250-0.9701)T和(-0.30150.9045-0.3015)T

求矩阵

的特征值和特征向量

解:

在Matlab编辑器中建立M文件:

LX0723.m

A=[-110;-430;102];

[V,D]=eig(A)

运行后结果显示为

V=

00.4082-0.4082

00.8165-0.8165

1.0000-0.40820.4082

D=

200

010

001

说明:

当特征值为1(二重根)时,对应特征向量都是k(0.40820.8165-0.4082)Tk为任意常数。

(五)关系操作

关系运算示例。

A=1:

9,B=10-A,r0=(A<4),r1=(A==B)

A=

123456789

B=

987654321

r0=

111000000

r1=

000010000

(六)逻辑操作

注意逻辑运算和关系运算之间的优先级次序。

(详见下节的表2.13-5)

A=-3:

3;

L1=~(A>0)

L2=~A>0

L3=~A

L4=A>-2&A<1

L1=

1111000

L2=

0001000

L3=

0001000

L4=

0011000

三、实验仪器、设备

1.主要设备是电脑,

2.软件环境为MATLAB6.5以上版本。

四、实验原理

1.数组是有序数据的集合,在大多数编程语言中,数组的每一个成员(元素)都属于同一种数据类型,它们使用同一个数组名称和不同的下标惟一确定数组中的成员(元素)。

其中,下标是指数组元素在数组中的序号。

2.向量就是一维数组,可以是行向量或列向量。

3.在MATLAB中矩阵就是线性代数中定义的矩阵的概念——矩阵就是用一对圆括号或者方括号扩起来,符合一定规则的数学对象。

五、实验步骤

1.首先进入MATLAB6.5环境,熟悉MAYLAB的工作环境以及工作空间。

2.用不同的方法创建矩阵和数组。

3.对创建的矩阵进行各种操作,如:

矩阵旋转、矩阵转置、矩阵运算等。

4.根据线性方程组系数矩阵的不同情况,分析是否存在惟一精确解,如果存在就对其求解。

5.练习求特征值和特征向量

6.对矩阵或向量进行关系运算或逻辑运算

六、实验报告要求

1.要求验证课本上关于矩阵各种运算的实验内容,写出命令窗口的操作过程,将运行结果如实记录,根据运行结果进行分析归纳;

2.写出通过本次对课堂授课内容有哪些促进和提高,总结出哪些规律。

得到哪些结论;

3.写出本次实验的心得和体会,并提出今后应注意的问题和改进的方向。

七、实验注意事项

1.实验内容在命令窗口进行直接操作,也可以在M文件中进行编程;

2.可以充分利用历史工作期进行重复指令操作和指令修改;

3.随时查看工作空间中的变量的内容、类型等信息,注意新变量和已经存在的变量的区别。

4.注意在操作过程中可以充分利用矩阵生成函数创建矩阵。

八、思考题

1.如何把当前工作空间保存成一个二进制文件?

2.如何在当前工作空间中恢复以前保存过的工作空间?

3.如何保存当前工作空间中的某些变量?

实验二、符号对象的创建及符号运算

一、实验目的

1.理解符号对象和数值对象之间的差别,以及它们之间的互相转换。

2.了解符号运算和数值运算的特点、区别和优缺点。

3.掌握符号对象的基本操作和运算,以及符号运算的基本应用。

二、实验内容

1.MATLAB工作环境Desktop的启动

双击桌面上的MATLAB6.5快捷方式,启动MATLAB环境。

2.设置当前工作目录

运用实验一提供的方法,将当作工作目录设置为D盘自建的文件夹。

3.课堂内容练习

◆符号对象的生成和使用

(1)符号常数形成中的差异

a1=[1/3,pi/7,sqrt(5),pi+sqrt(5)]%a1是数值常数

a2=sym([1/3,pi/7,sqrt(5),pi+sqrt(5)])%最接近的有理表示

a3=sym('[1/3,pi/7,sqrt(5),pi+sqrt(5)]')%绝对准确的符号数值表示

a24=a2-a3

a1=

0.33330.44882.23615.3777

a2=

[1/3,pi/7,sqrt(5),6054707603575008*2^(-50)]

a3=

[1/3-eps/12,pi/7-13*eps/165,sqrt(5)+137*eps/280,6054707603575008*2^(-50)]

a4=

[1/3,pi/7,sqrt(5),pi+sqrt(5)]

a24=

[0,0,0,189209612611719/35184372088832-pi-5^(1/2)]

(2)把字符表达式转换为符号变量

y=sym('2*sin(x)*cos(x)')%把字符表达式转换为符号变量

y=simple(y)%按规则把已有的y符号表达式化成最简形式

y=

2*sin(x)*cos(x)

y=

sin(2*x)

(3)用符号计算验证三角等式

symsfai1fai2;y=simple(sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2))

y=

sin(fai1-fai2)

(4)求矩阵

的行列式值、逆和特征根

symsa11a12a21a22;A=[a11,a12;a21,a22]

DA=det(A),IA=inv(A),EA=eig(A)

A=

[a11,a12]

[a21,a22]

DA=

a11*a22-a12*a21

IA=

[a22/(a11*a22-a12*a21),-a12/(a11*a22-a12*a21)]

[-a21/(a11*a22-a12*a21),a11/(a11*a22-a12*a21)]

EA=

[1/2*a11+1/2*a22+1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)]

[1/2*a11+1/2*a22-1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)]

◆识别对象类别的指令

(1)生成三种不同类型的矩阵,给出不同的显示形式

clear,a=1;b=2;c=3;d=4;%产生四个数值变量

Mn=[a,b;c,d]%利用已赋值变量构成数值矩阵

Mc='[a,b;c,d]'%字符串中的a,b,c,d与前面输入的数值变量无关

Ms=sym(Mc)%Ms是一个符号变量,它与前面各变量无关

Mn=

12

34

Mc=

[a,b;c,d]

Ms=

[a,b]

[c,d]

(2)三种矩阵的大小不同

SizeMn=size(Mn),SizeMc=size(Mc),SizeMs=size(Ms)

SizeMn=

22

SizeMc=

19

SizeMs=

22

(3)用class获得每种矩阵的类别

CMn=class(Mn),CMc=class(Mc),CMs=class(Ms)

CMn=

double

CMc=

char

CMs=

sym

(4)用isa判断每种矩阵的类别(若返回1,表示判断正确)

isa(Mn,'double'),isa(Mc,'char'),isa(Ms,'sym')

ans=

1

ans=

1

ans=

1

(5)利用whos观察内存变量的类别和其它属性

whosMnMcMs%观察三个变量的类别和属性

NameSizeBytesClass

Mc1x918chararray

Mn2x232doublearray

Ms2x2408symobject

Grandtotalis21elementsusing458bytes

◆符号表达式中自由变量的确定

(1)生成符号变量

symsabxXY;k=sym('3');z=sym('c*sqrt(delta)+y*sin(theta)');

EXPR=a*z*X+(b*x^2+k)*Y;

(2)找出EXPR中的全部自由符号变量

findsym(EXPR)%除常数符号k外的所有独立符号变量都被列出

ans=

X,Y,a,b,c,delta,theta,x,y

(3)在EXPR中确定一个自由符号变量

findsym(EXPR,1)

ans=

x

(4)在EXPR中确定2个和3个自由变量时的执行情况

findsym(EXPR,2),findsym(EXPR,3)

ans=

x,y

ans=

x,y,theta

 

◆符号表达式的操作:

简化

symsx;f=(1/x^3+6/x^2+12/x+8)^(1/3);

g1=simple(f),g2=simple(g1)

g1=

(2*x+1)/x

g2=

2+1/x

◆符号数值精度控制和任意精度计算

digits%显示省缺符号数值计算相对精度

Digits=32

p0=sym('(1+sqrt(5))/2');%p0为(1+sqrt(5))/2准确值

p1=sym((1+sqrt(5))/2)%p1是(1+sqrt(5))/2在数值环境下的近似值

e01=vpa(abs(p0-p1))%在符号环境32位省缺精度下,观察p0,p1间误差

p1=

7286977268806824*2^(-52)

e01=

.54321152036825

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

当前位置:首页 > 工程科技 > 能源化工

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

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