matlab矩阵维度不一致怎么办(Matlab矩阵的简单操作)

matlab矩阵维度不一致怎么办(Matlab矩阵的简单操作)

01

矩阵的特征值与特征向量

matlab矩阵维度不一致怎么办(Matlab矩阵的简单操作)

矩阵特征值的数学定义:设A是n阶方阵,如果存在常数λ和n维非零列向量x,使得等式Ax=λx成立,则称λ为A的特征值,x是对应特征值λ的特征向量。

函数调用格式有两种:

E=eig(A):求矩阵A的全部特征值,构成向量E。

[X,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并产生矩阵X,X各列是对应的特征向量。

>> A=[1 1 0;1 0 5;1 10 2]A = 1 1 0 1 0 5 1 10 2>> [X,D]=eig(A)X = 0.0722 0.9751 0.0886 0.5234 -0.0750 -0.6356 0.8490 -0.2089 0.7669D = 8.2493 0 0 0 0.9231 0 0 0 -6.1723>> A*X(:,1)ans = 0.5956 4.3174 7.0040>> D(1)*X(:,1)ans = 0.5956 4.3174 7.0040

02

稀疏矩阵

matlab矩阵维度不一致怎么办(Matlab矩阵的简单操作)

一、矩阵的存储方式

(1)完全存储方式

(2)稀疏存储方式

稀疏存储方式只是存储矩阵的非零元素的值及其位置,即行号和列号。

二、稀疏存储方式的产生

(1)完全存储方式与稀疏存储方式之间的转化

A=sparse(S):将矩阵S转化为稀疏存储方式的矩阵A。

S=full(A):将矩阵A转化为完全存储方式的矩阵S。

>> A=sparse(eye(5))A = (1,1) 1 (2,2) 1 (3,3) 1 (4,4) 1 (5,5) 1>> B=full(A)B = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1>> whos Name Size Bytes Class Attributes A 5×5 128 double sparse B 5×5 200 double

(2)直接建立稀疏存储矩阵

spares函数的其他调用格式:

sparse(m,n):生成一个m*n的所有元素都是零的稀疏矩阵。

sparse(u,v,S):其中u、v、S是3个等长的向量。S是要建立的稀疏矩阵的非零元素,u(i)、v(i)分别是S(i)的行和列下标。

>> A=sparse([1,2,2],[2,1,4],[4,5,-7])A = (2,1) 5 (1,2) 4 (2,4) -7>> B=full(A)B = 0 4 0 0 5 0 0 -7

使用spconvert函数直接建立稀疏存储矩阵,其调用格式为:B=spconvert(A)

A是一个m*3或m*4的矩阵,其每行表示一个非零元素,m是非零元素的个数。

A(i,1)表示第i个非零元素所在的行。

A(i,2)表示第i个非零元素所在的列。

A(i,3)表示第i个非零元素值的实部。

A(i,4)表示第i个非零元素值的虚部。

若矩阵的全部元素都是实数,则无须第4列。

>> A=[2,2,1;2,1,-1;2,4,3]A = 2 2 1 2 1 -1 2 4 3>> B=spconvert(A)B = (2,1) -1 (2,2) 1 (2,4) 3

(3)带状稀疏矩阵的稀疏存储

稀疏矩阵有两种基本类型:无规则结构的稀疏矩阵与有规则结构的稀疏矩阵。

带状稀疏矩阵是指所有非零元素集中在对角线上的矩阵。

[B,d]=spdiags(A):从带状稀疏矩阵A中提取全部非零对角线元素给矩阵B及其这些非零对角线的位置向量d。

A=spdiags(B,d,m,n):产生带状稀疏矩阵的稀疏存储矩阵A,其中m,n为原带状稀疏矩阵的行数与列数,矩阵B的第i列即为原带状稀疏矩阵的第i条非零对角线,向量d为原带状稀疏矩阵所有非零对角线的位置。

>> A=[11 0 0 12 0 0;0 21 0 0 22 0;0 0 31 0 0 32;41 0 0 42 0 0;0 51 0 0 52 0]A = 11 0 0 12 0 0 0 21 0 0 22 0 0 0 31 0 0 32 41 0 0 42 0 0 0 51 0 0 52 0>> [B,d]=spdiags(A)B = 0 11 12 0 21 22 0 31 32 41 42 0 51 52 0d = -3 0 3>> A=spdiags(B,d,5,6)A = (1,1) 11 (4,1) 41 (2,2) 21 (5,2) 51 (3,3) 31 (1,4) 12 (4,4) 42 (2,5) 22 (5,5) 52 (3,6) 32

(4)单位矩阵的稀疏存储

speye(m,n)返回一个m*n的稀疏存储单位矩阵。

>> speye(3)ans = (1,1) 1 (2,2) 1 (3,3) 1

三、稀疏矩阵的应用实例

【例】求下列三对角线性方程组的解。

>> kf1=[1;1;2;1;0];>> k0=[2;4;6;6;1];>> k1=[0;3;1;4;2];>> B=[kf1,k0,k1];>> d=[-1;0;1];>> A=spdiags(B,d,5,5);>> f=[0;3;2;1;5];>> x=A\fx = -0.1667 0.1111 2.7222 -3.6111 8.6111

注意:当参与运算的数据对象不全是稀疏存储矩阵时,所得结果是完全存储形式。

参考课程:中南大学《科学计算与MATLAB语言》

如有侵权,请联系删除

发表评论

登录后才能评论