matlab课程设计(关于矩阵操作)

发布时间:2018-11-22 17:23:11

课程设计任务书

学生姓名: 李圆超 专业班级: 信息SY1201

指导教师: 龙毅宏 工作单位: 信息工程学院

题目:MATLAB矩阵操作设计

要求完成的任务:

1. 利用MATLABmathematics对矩阵操作进行设计,具体包括创建(普通、单位、零)矩阵、矩阵运算、矩阵变形等。

2. 验证如下函数的功能:allanyfindisemptyisequalxor

课程设计的目的:

1.理论目的

理解掌握所学理论知识,并能用所学理论知识分析矩阵的操作,设计。

2.实践目的

熟练MATLAB的使用,验证并掌握MATLAB的一些基本函数,对矩阵进行实际的操作和设计。

时间安排:

指导教师签名:

系主任(或责任教师)签字:

目录

摘要......................................................................2

Abstract..................................................................3

1引言......................................................................4

1.1MATLAB的介绍.........................................................4

1.2矩阵的介绍...........................................................4

2 MATLAB对矩阵的操作........................................................4

2.1矩阵的生成...........................................................4

2.1.1直接输入法........................................................4

2.1.2 特殊矩阵的生成....................................................6

2.2矩阵的运算...........................................................8

2.2.1矩阵的加减........................................................8

2.2.2矩阵的相乘........................................................9

2.2.3矩阵的乘方........................................................9

2.2.4矩阵的除法.......................................................11

2.2.5矩阵的点乘.......................................................11

2.2.6矩阵的数乘.......................................................12

2.2.7矩阵的转置.......................................................12

2.2.8矩阵的逆.........................................................13

2.2.9求矩阵的特征值和特征向量.........................................13

2.3矩阵的变形..........................................................14

3验证部分函数的功能.......................................................15

3.1 allany函数.......................................................15

3.2 find函数............................................................17

3.3 isempty函数.........................................................20

3.4 isequal函数.........................................................20

3.5 xor函数.............................................................21

4 心得体会.................................................................23 5 参考文献.................................................................24

摘要

矩阵是高等代数学中的一种运算工具。在物理学.计算机科学.数学建模等领域有着极为广泛的应用。矩阵的各种运算都是较为繁琐的,而运用MATLAB可以快速简易的对矩阵进行各种运算以及变换等。因此学会运用MATLAB对矩阵进行各种操作至关重要。

本课程设计主要是运用MATLAB对矩阵进行操作.变换,熟练并掌握其使用方法,使自己在今后运用MATLAB进行矩阵操作时更加得心应手。同时,还对几种函数进行了验证,使自己可以掌握这几种函数的功能,在以后的操作中可以利用这几种函数进行更加快捷的运算。

关键词:矩阵 MATLAB 课程设计 函数

Abstract

Matrix is a computational tool of higher algebra.It has a very wide range of applications in physics, Computer science, Mathematics modeling and other fields.All kinds of matrix operations are relatively cumbersome,and it will be very fast and easy for the operation and transformation of matrix to use MATLAB.Therefore,learning how to use MATLAB to variedly operate the matrix is very important.

Using MATLAB to operate the matrix is the main part of the curriculum design,and I can not only master the method but also make myself more handy in the future by doing that.Besides,I also verify several functions which makes me more familiar to how to use those,and I can use those types of functions to operate more quickly in the future.

Key word: Matrix MATLAB Curriculum design Function

1引言

1.1MATLAB介绍

MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如CFortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

MATLABMathematicaMaple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连 接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用CFORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对CFORTRANC++ JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。

1.2矩阵的介绍

矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。在物理学中,矩阵于电路学、力学光学量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。 矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。对一些应用广泛而形式特殊的矩阵,例如稀疏矩阵和准对角矩阵,有特定的快速运算算法。关于矩阵相关理论的发展和应用,请参考矩阵理论。在天体物理、量子力学等领域,也会出现无穷维的矩阵,是矩阵的一种推广。

2 MATLAB对矩阵的操作

2.1矩阵的生成

2.1.1直接输入法

MATLAB的强大功能之一体现在能直接处理矩阵。当然首要任务是输入待处

理的矩阵。 不管是任何矩阵,我们可以直接按行方式输入每个 元素,同一行中的元素用逗号(,)或者用空格符来分隔, 且空格个数不限;不同的行用分号(;)分隔。所有元素处于一方括 号([]内;当矩阵是多维(三维以上),且方括号内的元素是维数较低的矩 阵时,会有多重的方括号。

例如:

>> A=[1 2 3 ; 4 5 6; 7 8 9]

结果显示:

A =

1 2 3

4 5 6

7 8 9

>>B=[12,13,14;1,2,3;4,5,6]

结果显示:

B=

12 13 14

1 2 3

4 5 6

>>C=[2.5 3.5 ;4.5 5.8]

结果显示:

C =

2.5000 3.5000

4.5000 5.8000

>>D=[1 0 0;0 1 0;0 0 1] %单位矩阵

结果显示:

D =

1 0 0

0 1 0

0 0 1

>>E=[0 0 0;0 0 0;0 0 0] %零矩阵

结果显示:

E =

0 0 0

0 0 0

0 0 0

>>F=[1 1 1;1 1 1;1 1 1] %1矩阵

结果显示:

F =

1 1 1

1 1 1

1 1 1

>>H=[] %空矩阵

结果显示:

H =

[]

2.1.2特殊矩阵的生成

命令  全零阵

函数  zeros

格式  B = zeros(n)   %生成n×n全零阵

B = zeros(m,n)     %生成m×n全零阵

B = zeros([m n])    %生成m×n全零阵

B = zeros(size(A)) %生成与矩阵A相同大小的全零阵

如:>>A=zeros(3) %生成3×3全零阵

结果显示:

A =

0 0 0

0 0 0

0 0 0

>>B=zeros(2,3) %生成2×3全零阵

结果显示:

B =

0 0 0

0 0 0

命令  单位阵

函数  eye

格式  Y = eye(n)   %生成n×n单位阵

Y = eye(m,n)     %生成m×n单位阵

Y = eye(size(A))   %生成与矩阵A相同大小的单位阵

如:>>A=eye(3) %生成3×3单位阵

结果显示:

A =

1 0 0

0 1 0

0 0 1

>>B=eye(2,3) %生成2×3单位阵

结果显示:

B =

1 0 0

0 1 0

命令  1
函数  ones

格式  Y = ones(n)   %生成n×n1

Y = ones(m,n)      %生成m×n1

Y = ones([m n])     %生成m×n1

Y = ones(size(A))    %生成与矩阵A相同大小的全1

如:>>A=ones(2) %生成2×21

结果显示:

A =

1 1

1 1

>>B=ones(3,2) %生成3×21

结果显示:

B =

1 1

1 1

1 1

2.2矩阵的运算

2.2.1矩阵的加减

运算符:分别为加、减运算符。

运算规则:对应元素相加、减,即按线性代数中矩阵的运算进行。

如:>>A=[2, 2, 2; 1, 2, 3; 1, 3, 6];

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

X=A+B

Y=A-B

结果显示:

X =

10 3 8

4 7 10

5 12 8

Y =

-6 1 -4

-2 -3 -4

-3 -6 4

2.2.2矩阵的相乘

运算符:*

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

如:>>X=[1 2 3 ;4 5 6;7 8 9];

Y=[1 1 1;2 4 1;9 5 7];

Z=X*Y

结果显示:

Z =

32 24 24

68 54 51

104 84 78

2.2.3矩阵的乘方

运算符:^

运算规则:当A为方阵,P为大于0的整数时,A^P表示AP次方,即A自乘P次;P为小于0的整数时,A^P表示A的逆矩阵的P次方。

注意:若A不为方阵,则不能进行A之间的相乘,故不能乘方。此时有P.^A表示以A中相对位置的数为指数,P为底数,所得到的数所组成的矩阵,而A.^P表示以A中相对位置的数为底数,P为指数,所得到的数所组成的矩阵。

:>> A=[3 7 -3;-2 -5 2;-4 -10 3];B=2;C=-2;

D=A^B

E=A^C

结果显示:

D =

7 16 -4

-4 -9 2

-4 -8 1

E =

7.0000 16.0000 -4.0000

-4.0000 -9.0000 2.0000

-4.0000 -8.0000 1.0000

>>A=[1 2 3;4 5 6;7 8 9];P=2;

B=A.^P

C=P.^A

结果显示:

B =

1 4 9

16 25 36

49 64 81

C =

2 4 8

16 32 64

128 256 512

2.2.4矩阵的除法

运算符:\ /

运算规则:Matlab提供了两种除法运算:左除(\)和右除(/)。一般情况下,x=a\b是方程a*x =b的解,而x=b/a是方程x*a=b的解。

如:>> A=[2, 2, 2; 1, 2, 3; 1, 3, 6];B=[30 30 30;26 38 26;41 70 39];

X=A\B

Y=A/B

结果显示:

X =

8 1 6

3 5 7

4 9 2

Y =

0.0667 -0.0000 0.0000

-0.7667 2.5000 -1.0000

-1.9306 6.2083 -2.5000

2.2.5矩阵的点乘

运算符:.*

运算规则:A.*B 两矩阵的维数必须相同,A中相应位置元素与B中对应位置元素相乘,得到新矩阵。

如:>>A=[1 2;3 4;5 6];B=[7 8;9 10;11 12];

X=A.*B

结果显示:

X =

7 16

27 40

55 72

2.2.6矩阵的数乘

运算符:*

运算规则:P是一个实数,P*AA*P),即PA中的每个元素进行乘积,得到新矩阵,PA位置可以交换,结果不变。

如:A=[4 5;9 10;1 3];P=2;

X=P*A

Y=A*P

结果显示:

X =

8 10

18 20

2 6

Y =

8 10

18 20

2 6

2.2.7矩阵的转置

运算符:'

运算规则:A为实数矩阵,与线性代数中的矩阵的转置相同。

如:>> A=[1 2 3;4 5 6;7 8 9];

B=A'

结果显示:

B =

1 4 7

2 5 8

3 6 9

2.2.8矩阵的逆

Y=inv(X)Y=X^(-1)

如:>>A=[1 2 3;2 2 1;3 4 3];

B=inv(A)

C=A^(-1)

结果显示:

B =

1.0000 3.0000 -2.0000

-1.5000 -3.0000 2.5000

1.0000 1.0000 -1.0000

C =

1.0000 3.0000 -2.0000

-1.5000 -3.0000 2.5000

1.0000 1.0000 -1.0000

2.2.9求矩阵的特征值和特征向量

[V,D]=eig(A)

A为所求矩阵,V为特征向量矩阵,D为特征值矩阵。

如:A=[3 4;5 2];

[V,D]=eig(A)

结果显示:

V =

0.7071 -0.6247

0.7071 0.7809

D =

7 0

0 -2

2.4矩阵的变形

B=reshape(A,M,N)是把指定的矩阵改变形状,但是元素个数不变,就是说M*N必须等于A中的元素个数,M代表变换后的行数,N代表列数,B是按列从A中得到,并且B也是按列书写,也就是说变换时是按列变换。

如:>>A=[1 2 3 4 5 6 7 8 9];

B=reshape(A,3,3)

结果显示:

B =

1 4 7

2 5 8

3 6 9

>>A=[4 7 8 10; 9 10 6 7;5 2 3 1];

B=reshape(A,4,3)

结果显示:

B =

4 10 3

9 2 10

5 8 7

7 6 1

3验证部分函数的功能

3.1 allany函数

all函数:检测矩阵中是否全为非零元素,如果是,则返回1,否则,返回0

any函数:检测矩阵中是否有非零元素,如果有,则返回1,否则,返回0。用法和all一样

用法:B=all(A)

如果A是一个向量,如果所有的元素都是非零的,则返回1,如果有一个元素为零,则返回0

如果A是一个矩阵,则返回一个行向量,用于检测每一列是否全为非零元素,如果某一列中有一个元素为零,则返回0,如果某一列中全为非零元素,则返回1,由此构成一个行向量。

B = all(A, 1)

返回一个行向量,可以认为all(A, 1)等价于all(A)

B= all(A, 2)

返回一个列向量,用于检测每一行是否全为非零元素,如果某一行中有一个元素为零,则返回0,如果某一行中全为非零元素,则返回1,由此构成一个列向量。

anyall同理,此处不再叙述。

如:>>A=[1 2 3;2 0 0;3 1 0];

B=all(A)

B=all(A,1)

B=all(A,2)

C=any(A)

C=any(A,1)

C=any(A,2)

结果显示:

B =

1 0 0

B =

1 0 0

B =

1

0

0

C =

1 1 1

C =

1 1 1

C =

1

1

1

3.2 find函数

find函数用于返回所需要元素的所在位置 (位置的判定:在矩阵中,第一列开始,自上而下,依次为123...,然后再从第二列,第三列依次往后数)

用法:find(A)指的是返回矩阵A中非零元素所在的位置。

如:>>A=[1 0 2;3 0 0;8 5 0];

X=find(A)

结果显示:

X =

1

2

3

6

7

find(A>m)或者find(A指的是矩阵A中大于m或者小于m的元素所在的位置。

如:>>A=[1 5 8;0 3 2;2 1 9];

X=find(A>4)

结果显示:

X =

4

7

9

[i,j,a]=find(A)指的是A中非零元素所在的行i,j,和此元素的值a。同理,[i,j,]=find(A>m)指的是A中大于m的元素所在的行,列。

如:>>A=[0 0 8;1 5 0; 0 3 0];

[i,j,a]=find(A)

结果显示:

i =

2

2

3

1

j =

1

2

2

3

a =

1

5

3

8

>>A=[2 3 8;5 9 0; 1 4 3];

[i,j]=find(A>4)

结果显示:

i =

2

2

1

j =

1

2

3

find(A,m)则是指找出A中的前m个非零元素的位置。同时,其他形势括号中加“,m”也是同理。m表示前m个满足要求的元素。

如:>>A=[2 3 8;5 9 0;1 4 3];

X=find(A,2)

[i,j]=find(A>4,2)

结果显示:

X =

1

2

i =

2

2

j =

1

2

3.3 isempty函数

判断一个矩阵或者数组是否为空,若为空则返回逻辑1,否则返回0

如:>>A=[];

X=isempty(A)

结果显示:

X =

1

>>A=[1;2;3];

X=isempty(A)

结果显示:

X =

0

3.4 isequal函数

判断两个矩阵是否相等,若相等则返回逻辑1,否则返回0

如:>>A=[1 2 3;4 5 6];B=[5 0 3;0 2 5];

C=[2 2;3 3];

X=isequal(A,B)

Y=isequal(A,C)

Z=isequal(A,A)

结果显示:

X =

0

Y =

0

Z =

1

3.5 xor函数

matlabxor函数运用时会将非零数转换为1,再进行异或,同为10

0。一个为1,一个为0,则得1。运用于矩阵中则是维数相同的矩阵间相应元素进行异或,但也是会将非零数转换为1

如:>>A=[1 2 3;0 1 0;1 0 0]

B=[0 1 0;0 3 5;3 5 8]

X=xor(A,B)

结果显示:

A =

1 2 3

0 1 0

1 0 0

B =

0 1 0

0 3 5

3 5 8

X =

1 0 1

0 0 1

0 1 1

4心得体会

通过此次课程设计我收获了很多,MATLAB真的是一款很强大的软件,我在用其对矩阵进行操作时,充分的体会到了它为我们进行矩阵分析时所带来的便利,矩阵的各种变换,运算都可以在MATLAB中一瞬间完成,大大节省了我们进行矩阵运算时的时间。此外,我也认识了一些MATLAB中的函数,相信在以后利用MATLAB时,运用这些函数可以为我节省很多时间,帮助我解决很多头疼的问题。

在这个设计过程中,我通过查阅各种资料,与同学进行讨论,以及自己的努力,不仅增强了自己独立思考,勤于动手的能力,也使我对MATLAB产生了极大的兴趣。我也决定以后去进一步的研究运用MATLAB

总之,这次是我第一次做课程设计,尽管有很多不足,内容也都是比较基础的,但自己花费大量时间做完后,还是很有成就感的。

5参考文献

1.《经济数学——线性代数》吴传生主编 高等教育出版社

2.MATLAB函数速查手册》邓薇主编 人民邮电出版社

3.《精通MATLAB最优化计算》龚纯王正林主编 电子工业出版社

4.MATLAB从入门到精通》周建兴主编 人民邮电出版社

本科生课程设计成绩评定表

指导教师签字:__________________

matlab课程设计(关于矩阵操作)

相关推荐