matlab矩阵运算函数

2019-01-27 15:33

一、Matlab矩阵运算

1.变数也可用来存放向量或矩阵,并进行各种运算.如下面的列向量运算: x=[1 3 5 2]; y=2*x+1 y = 3 7 11 5 2.变数命名的规则

(1)第一个字母必须是英文字母 (2)字母间不可留空格

(3)最多只能有19个字母,MATLAB会忽略多余字母 我们可以随意更改、增加或删除向量的元素: y(3) = 2 %更改第三个元素 y = 3 7 2 5 y(6) = 10 %加入第六个元素 y = 3 7 2 5 0 10 y(4) = [] %删除第四个元素 y = 3 7 2 0 10

MATLAB会忽略所有在百分比符号(%)之后的文字,因为百分比之后的文字为程式的注解

3.常用线性代数函数 B=A’ 矩阵转置 C=A+B 矩阵相加 C=A*B 矩阵相乘 C=A^K 矩阵幂 C=A.*B 矩阵点乘,即两维数相同的矩阵各对应元素相称 expm(A) 指数矩阵 inv(A) 逆矩阵 det(A) 矩阵行列式的值 rank(A) 计算矩阵的秩 eig(A) 矩阵的特征值 [X,D]=eig(A) 矩阵的特征向量X和以特征值为元素的对角阵D P=poly(A) 矩阵的特征多项式 R=roots(p) 特征多项式方程的根 Conv(p1.p2) 两多项式相乘 上面所列的都是有关矩阵的操作函数。如eig(A)可求出A的特征根及其特征向量,具体执行方法为:输入A矩阵

>>A=[0 1;-6 -5] A=

0 1 -6 -5

E=eig(A) %求出方阵A的特征根E E= -2 -3

[V,D]=eig(A) %求出方阵A的特征向量V及其A的对角型D

V=

0.4472 -0.3162 -0.8944 0.9487 D=

-2 0 0 -3

4.考虑一个“数学问题”, 该问题用半数学语言描述就是:如何生成一个 3x3 矩阵, 并将自然数 1, 2, ..., 9 分别置成这 9 个矩阵元素,才能使得每一行、每一列、且主、反对角线上元素相加都等于一个相同的数。这样的矩阵称为“魔方矩阵”。用 MATLAB 的 magic() 函数,我们可以由下面的命令立即生成这样的矩阵: >>A=magic(3) A=

8 1 6 3 5 7 4 9 2

还可以由B=magic(10)一次生成 10x10 的魔方矩阵。如果想求出矩阵的行列式和特征值,可以分别由 det(B) 与 eig(B) 立即得出结果

二、特殊矩阵

zeros函数是形成元素皆为0 的矩阵;ones函数是形成元素皆为 1 的矩阵; eye则是产生一个单位矩阵,之所以称为eye是取其发音与原来单位矩阵符号I相同,而又避免与定义复数中的虚 部所用的符号i雷同,所以改以eye替代。 上述三个函数的使用语法都相似,如zeros(m)可以产生一个m×m的正方 矩阵,而zeros(m,n)产生的是m×n的矩阵。也可以使用这三个函数将一m×n矩阵原来元素全部取代成0, 1 或 是单位矩阵的值,不过要加上size指令来指出其矩阵大小是m,n,所以语法为zeros(size(A)),其中A是原来矩阵。 >> A=zero(2) %0的矩阵 A=

0 0 0 0

>> B=zeros(2,3) B=

0 0 0 0 0 0

>> C=[1 2; 3 4; 5 6];

>> size(C) %使用 size 指令得到C矩阵的大小 ans =

3 2

>>D=zeros(size(C)) %加上size指令将矩阵C 原来的元素全部以0取代 >>A=ones(2),B=ones(2,3) %1的矩阵 A=

1 1 1 1 B=

1 1 1 1 1 1

三、Matlab矩阵运算函数

1.先介绍几个与矩阵转角有关的函数:rot90,fliplr,flipud,它们的用法及说明.请参考以下的例子。

>>A=[2 1 0; -2 5 -1; 3 4 6];

>>B=rot90(A) %将A矩阵逆时针转90度 B =

0 -1 6 1 5 4 2 -2 3

>> A=[1 2; 4 8; -2 0];

>> B=fliplr(A); % 将A矩阵从左向右翻 >> C=flipud(A); % 将A矩阵从上向下翻 >> B, C B = 2 1 8 4 0 -2 C = -2 0 4 8 1 2

2.另外函数 reshape 则是用来调整矩阵改形,即是在矩阵的元素总数不变下,改变其列及行的大小。见以下范例。 >>A=[2 5 6 -1; 3 -2 10 0];

>>B=reshape(A,4,2); % 将A矩阵改成 4x2 的矩阵 >>C=reshape(A,1,8); % 将A矩阵改成 8x1 的矩阵 >>B,C B=

2 6 3 10 5 -1 -2 0 C= 2 5 6 1 3 -2 10 0

3.我们如果要将矩阵内的特定元素读取出来,或是将特定元素以其它值取代,以下的函数diag, triu, tril 提供了这方面的功能。diag是只保留原矩阵的主对角线 (main diagonal) 的元素,其余的元素以零取代。triu, tril 则是分别产生上三角形及下三角形矩阵,其余的元素也以零取代。以下的例子详细的说明这三个函数的用法: >> V=[1 2 3]; >> A=diag(V) A=

1 0 0 0 2 0 0 0 3

>>A=[1:2:7; 3:3:12; 4:-1:1; 1:4] A=

1 3 5 7 3 6 9 12 4 3 2 1 1 2 3 4 >>B=triu(A) B=

1 3 5 7 0 6 9 12 0 0 2 1 0 0 0 4

>>A=[1:2:7; 3:3:12; 4:-1:1; 1:4] A=

1 3 5 7 3 6 9 12 4 3 2 1 1 2 3 4

>>C=triu(A,-1) C=

1 3 5 7 3 6 9 12 0 3 2 1 0 0 3 4

>>D=triu(A,3) D=

0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0

4.我们在前面已说明过 MATLAB 的运算是以阵列(array)及矩阵 (matrix) 方式在做运算,而这二者在MATLAB的 基本运算性质不同,阵列强调元素对元素的运算,而矩阵则采用线性代数的运算方式。我们就来说明矩阵运算 的特点。 以下将阵列及矩阵的运算符号及其意义列出 利用这些运算符号即可进行以下的矩阵运算。 >>A=[2 5 1; 7 3 8; 4 5 21; 16 13 0]; >>A' %A的转置矩阵 A=

2 7 4 16 5 3 5 13 1 8 21 0

>>A=[4 -1 3]; B=[-2 5 2];

>>dot_prod= sum(A.*B) %二个阵列做内积 dot_prod= -7

>>c=dot(A,B) %以dot函数也可做内积运算 c= -7

>>A=[4; -1; 3];

>>dot_prod= sum(A'.*B);%如果A是行阵列则先做转置,再做内积 >>F=[2 5 -1]; G=[0 1 -3]; >>out_prod=F'*G;%二矩阵做外积 >>A=[2,5,1; 0,3,-1];

>>B=[1,0,2; -1,4,-2; 5,2,1];

>>C=A*B %矩阵相乘,注意二个矩阵的大小须相容 C=

2 22 -5 -8 10 -7

5.函数polyvalm是以矩阵方式做多项式函数计算,有别于polyval是以阵列方式计算函数值。它的语法为 polyvalm(a,X),其中X为一矩阵而a则是一多项式。以下的例子可说明其用法。 >>X=[1 1 1; 2 2 2; 3 3 3]; >>a=[1 1 1];%注意a=X*X+X+I >> f=polyvalm(a,X) f= 8 7 7 14 15 14 21 21 22

6.逆矩阵、矩阵秩与行列式

MATLAB的逆矩阵函数和秩函数语法分别为inv(A), rank(A),:例如: >>A=[2 1; 4 3]; >>rank(A)

2 %表示A秩数为2且等于矩阵的列数 >>inv(A) %逆矩阵 ans=

1.5000 -0.5000 -2.0000 1.0000

>>B=[2 1; 3 2; 4 5];%B为奇异矩阵 >>rank(B) ans=

2 %表示B秩数为2,但是其列数为3

MATLAB提供 计算行列式的函数,其语法为det(A),例如: >>A=[1 3 0; -1 5 2; 1 2 1]; >>det(A) %矩阵之行列式值 ans=10


matlab矩阵运算函数.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新烟花爆竹试题及答案2018

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: