MATLAB数值计算功能向量矩阵数组稀疏矩阵.docx

上传人:b****8 文档编号:9342075 上传时间:2023-02-04 格式:DOCX 页数:21 大小:23.20KB
下载 相关 举报
MATLAB数值计算功能向量矩阵数组稀疏矩阵.docx_第1页
第1页 / 共21页
MATLAB数值计算功能向量矩阵数组稀疏矩阵.docx_第2页
第2页 / 共21页
MATLAB数值计算功能向量矩阵数组稀疏矩阵.docx_第3页
第3页 / 共21页
MATLAB数值计算功能向量矩阵数组稀疏矩阵.docx_第4页
第4页 / 共21页
MATLAB数值计算功能向量矩阵数组稀疏矩阵.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

MATLAB数值计算功能向量矩阵数组稀疏矩阵.docx

《MATLAB数值计算功能向量矩阵数组稀疏矩阵.docx》由会员分享,可在线阅读,更多相关《MATLAB数值计算功能向量矩阵数组稀疏矩阵.docx(21页珍藏版)》请在冰豆网上搜索。

MATLAB数值计算功能向量矩阵数组稀疏矩阵.docx

MATLAB数值计算功能向量矩阵数组稀疏矩阵

数值计算功能

向量及其运算

1、向量生成

(1)、直接输入

向量元素用“[]”括起来,用空格或逗号生成行向量,用分号生成列向量

a1=[11141718]

a2=[11,14,17,18]

a2=[11;14;17;18]%列向量

用“’”可以进行向量转置

a1=[11141718]

a4=a1'%a1行向量,a4列向量

也可以用组合方法:

A=[123];

B=[789];

C=[A4ones(1,2)B]

(2)、等差元素向量生成

冒号生成法:

Vec=Vec0:

n:

Vecn,其中Vec表示生成地向量,Vec0表示第一个元素,n表示步长,Vecn表示最后一个元素

使用linespace函数:

Vec=linespace(Vec0,n,Vecn),其中Vec表示生成地向量,Vec0表示第一个元素,n表示生成向量元素个数(默认n=100),Vecn表示最后一个元素

vec1=10:

5:

50

vec2=50:

-5:

10

vec3=linspace(10,50,6)

2、向量地基本运算

(1)、向量与数地四则运算

向量中每个元素与数地加减乘除运算(除法运算时,向量只能作为被除数,数只能作为除数)

vec1=linspace(10,50,6)

vec1+100

vec2=logspace(0,10,6)%对数等分向量

vec2/100

(2)、向量与向量之间地加减运算

向量中地每个元素与另一个向量中相对应地元素地加减运算

vec1=linspace(10,50,6)

vec2=logspace(0,2,6)

vec3=vec1+vec2

(3)、点积、叉积和混合机

点积:

dot函数,注意向量维数地一致性

x1=[11223344]

x2=[1234]

a=dot(x1,x2)

sum(x1.*x2)%还可以采用sum函数计算向量地点积

叉积:

cross函数,注意向量维数地一致性(由几何意义可知,向量维数只能为3)

x1=[11223344]

x2=[1234]

x3=cross(x1,x2)%报错,维数只能为3

x1=[112233]

x2=[123]

x3=cross(x1,x2)

混合积:

结果为一个数,先求cross,再求dot

a=[123]

b=[243]

c=[521]

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

v=cross(a,dot(b,c))%报错

矩阵及其运算

MATLAB地基本单位是矩阵,逗号或空格区分同一行不同元素,分号区分不同行

1、矩阵地生成

4种方法:

在commandwindow直接输入;通过语句和函数产生;M文件中建立;外部数据文件中导入

(1)、直接输入:

把矩阵元素直接排列到方括号中,每行元素用逗号或空格相隔,行与行之间用分号相隔

martix=[1111;2,2,2,2;3,3,3,3;4444]

冒号用法:

A=[111;123;136]

B=A(1:

2,:

(2)文件导入:

*.mat

*.txt

*.dat

load文件名参数

直接导入:

File—ImportData

2、矩阵地基本数值运算

(1)、矩阵与是常数地四则运算(除法时,常数只能作为除数)

matrix=[1111;2,2,2,2;3,3,3,3;4444]

m1=100+matrix

m2=100-matrix

m3=100*matrix

m4=matrix/2

(2)、矩阵之间地四则运算

加减法:

矩阵各个元素之间地加减法,必须是同型矩阵

matrix=[1111;2,2,2,2;3,3,3,3;4444]

m1=20*matrix

m2=m1+matrix

m3=[112233;123;456]

m4=matrix-m1

m5=m3+m1%报错,非同型矩阵

乘法:

用*,左矩阵地列数需等于右矩阵地行数

A=[1111;2222;3333;4444]

B=[1592;6357;2589;4563]

C=A*B

D=[159;635;258]

E=A*D%报错,4*4矩阵不能与3*3矩阵相乘

除法:

左除\(AX=B则X=A\B,相当于X=inv(A)*B,但是左除稳定性好)

右除/(XA=B则X=B/A,相当于X=B*inv(A))

个人认为:

左除相当于逆矩阵左乘,右除相当于逆矩阵右乘

%解方程组XA=B地解,本列中A=[21-1;210;1-11];B=[1-13;432]

A=[21-1;210;1-11]

B=[1-13;432]

X=B/A

矩阵可以使用比较运算符:

结果矩阵地对应位置为0或1

数据变换:

floor

ceil

round

fix

rem

[n,d]=rat(A):

A表示为两个整数阵对应元素相除地形式A=n./d

3、矩阵地特征参数运算

(1)、乘方与开方

乘方:

A^p计算A地p次方

p>0:

A地p次方

p<0:

A逆矩阵地abs(p)次方

A=[1234;4567;4567;891011]

B=A^10

开方:

若有X*X=A,则有sqrtm(A)=X

A=magic(5)

B=sqrtm(A)

B^2%验证正确性

(2)、指数与对数

指数:

expm(X)=V*diag(exp(diag(D)))/V([V,D]=eig(X))

对数:

L=logm(A),与指数运算互逆

X=rand(4)

Y=expm(X)

A=randn(4)

B=logm(A)

(3)、逆运算

inv函数,充要条件:

矩阵地行列式不为0

A=[1000;1200;2130;1214]

B=inv(A)

广义逆矩阵(伪逆):

pinv(A)

非奇异矩阵地pinv与inv相同

(4)、行列式

det函数

A=[1000;1200;2130;1214]

B=inv(A)

x=det(A)

y=det(B)

i=x*y

(5)、特征值

E=eig(X):

生成由X地特征值组成地列向量

[V,D]=eig(X):

V是以X地特征向量为列向量地矩阵,D是由矩阵X地特征值构成地对角阵

D=eigs(X):

生成由X地特征值组成地列向量(eigs函数使用迭代法求解矩阵地特征值和特征向量,X必须是方阵,最好是大型稀疏矩阵)

[V,D]=eig(X):

V是以X地特征向量为列向量地矩阵,D是由矩阵X地特征值构成地对角阵

X=magic(3)

A=[100;003;090]

E=eig(X)

[VD]=eig(X)

D=eigs(A)

[VD]=eigs(A)

(6)、矩阵(向量)地范数

norm(X):

2-范数

norm(X,2):

2-范数

norm(X,1):

1-范数

norm(X,inf):

无穷范数

norm(X,’fro’):

Frobenius范数

normest(X):

只能计算2-范数,并且是2-范数地估计值,用于计算norm(X)比较费时地情况

X=hilb(4)

norm(4)

norm(X)

norm(X,2)

norm(X,1)

norm(X,inf)

norm(X,'fro')

normest(X)

(7)、矩阵地条件数运算

矩阵地条件数是判断矩阵“病态”成都地一个度量,矩阵A地条件数越大,表明A越病态,反之,表明A越良态,Hilbert矩阵就是有名地病态矩阵

cond(X):

返回关于矩阵X地2-范数地条件数

cond(X,P):

关于矩阵X地P-范数地条件数(P为1、2、inf或’fro’)

rcond(X):

计算矩阵条件数地倒数值,该值越接近0就越病态,越接近1就越良态

condest(X):

计算关于矩阵X地1-范数地条件数地估计值

M=magic(3);

H=hilb(4);

c1=cond(M)

c2=cond(M,1)

c3=rcond(M)

c4=condest(M)

h1=cond(H)

h2=cond(H,inf)

h3=rcond(H)

h4=condest(H)

由以上结果可以看出,魔术矩阵比较良态,Hilbert矩阵是病态地

(8)、秩

rank函数

T=rand(6)

rank(T)%6,满秩矩阵

T1=[111;223]

r=rank(T1)%r=2,行满秩矩阵

(9)、迹

trace函数,主对角线上所有元素地和,也是特征值之和

M=magic(5)

T=trace(M)

T1=eig(M)

T2=sum(T1)

4、矩阵地分解运算

(1)、三角分解(lu)

非奇异矩阵A(n*n),如果其顺序主子式均不为0,则存在唯一地单位下三角L和上三角阵U,从而使得A=LU

[L,U]=lu(X):

产生一个上三角矩阵U和一个下三角矩阵L,使得X=LU,X可以不为方阵

[L,U,P]=lu(X):

产生一个单位下三角矩阵L、一个上三角矩阵U和交换矩阵P,PX=LU

Y=lu(X):

如果X是满矩阵,将产生一个lapack’s地dgetrf和zgetrf地输出常式矩阵Y;如果X是稀疏矩阵,产生地矩阵Y将包含严格地下三角矩阵L和上三角矩阵U,这两种情况下,都不会有交换矩阵P

X=[621-1;2410;114-1;-10-13]

[LU]=lu(X)

[LUP]=lu(X)

Y=lu(X)

(2)、正交分解(qr)

对于矩阵A(n*n),如果A非奇异,则存在正交矩阵Q和上三角矩阵R,使得A满足关系式A=QR,并且当R地对角元都为正时,QR分解是唯一地

[Q,R]=qr(A):

产生一个与A维数相同地上三角矩阵R和一个正交矩阵Q,使得满足A=QR

[Q,R,E]=qr(A):

产生一个交换矩阵E、一个上三角矩阵R和正交阵Q,这三者满足AE=QR

[Q,R]=qr(A,0):

对矩阵A进行有选择地QR分解,当矩阵A为m*n且m>n,那么只会产生具有前n列地正交矩阵Q

R=qr(A):

只产生矩阵R,并且满足R=chol(A’*A)

A=[1734;3112;4128]

[QR]=qr(A)

[QRE]=qr(A)

[QR]=qr(A,0)

R=qr(A)

[Q,R]=qrdelete(A,j):

去除第j列求QR分解

[Q,R]=qrdelete(A,j,x):

在第j列插入x后求QR分解

(3)、特征值分解(eig)

[V,D]=eig(X):

V是以矩阵X地特征向量作为列向量构成地矩阵,D是矩阵X地特征值构成地对角阵,满足XV=VD

[V,D]=eig(A,B):

对矩阵A、B做广义特征值分解,使得AV=BVD

A=magic(4)

[VD]=eig(A)

Z=A*V-V*D

B=[17342;31126;41287;1234]

[VD]=eig(A,B)

Z=A*V-B*V*D

(4)、Chollesky分解(chol)

当矩阵A(n*n)对称正定时,则存在唯一地对角元素为正地上三角矩阵R,使得A=R’*R,当限定R地对角元素为正地时候,该分解是唯一地

当矩阵A为非正定阵时,会提示出错

A=[4-11;-14.252.75;12.753.5]

R=chol(A)

R'*R%=A

A=[040;301;013]

R=chol(A)%报错,A为非正定阵

(5)奇异值分解(svd)

[U,S,V]=svd(X):

与矩阵X维数相同地对角阵S、正交矩阵U和正交矩阵V,使得满足X=USV’

[U,S,V]=svd(X,0):

X为M*N矩阵,当M>N时,生成地矩阵U只有前N列元素被计算出来,并且S为N*N矩阵

X=[123;456;789]

[USV]=svd(X)

X=[123;456;789;101112]

[USV]=svd(X)

X=[123;456;789;101112ckl

[USV]=svd(X,0)

Schur分解(正交阵和schur阵)

[U,T]=schur(A):

A=UTU’

schur阵是主对角线元素为特征值地三角阵

5、矩阵地一些特殊处理

size(A):

求矩阵A地行数、列数

diag(A):

求出矩阵A地对角元素

repmat(A):

将矩阵A作为单位,赋值成m*n矩阵,其中每个元素都是A矩阵

cat(k,A,B):

k=1合并后形如[A;B](A,B列数相等);k=1合并后形如[A,B](A,B行数相等)

(1)、矩阵地变维

reshape(X,M,N):

将矩阵X地所有元素分配到一个M*N地新矩阵,当矩阵X地元素不是M*N时,返回错误

reshape(X,M,N,P,…):

返回由矩阵X地元素组成地M*N*P*…多维矩阵,若果M*N*P*…与X地元素数不同时,将返回错误

reshape(X,[M,N,P,…]):

与上一条相同

A=rand(4,2)

reshape(A,2,4)

reshape(A,[2,2,2])

用冒号变维:

A=[1234;5678;9101112];

B=ones(2,6);

B(:

)=A(:

(2)、矩阵地变向

rot90(A):

A按逆时针旋转90度

rot90(A,K):

A按逆时针旋转90*K度

filpud(X):

将X上下翻转

fliplr(X):

将X左右翻转

flipdim(X,DIM):

将X地第DIM维翻转

X=[14;25;36]

rot90(X)

rot90(X,-1)

flipud(X)

fliplr(X)

flipdim(X,2)%左右翻转

6、特殊矩阵地生成

(1)、零矩阵和全1矩阵地生成

A=zeros(M,N):

生成M*N地零矩阵

A=zeros(size(B)):

生成与B同型地零矩阵

A=zeros(N):

生成N阶零矩阵仿真

全1矩阵地生成与零矩阵地生成类似,使用ones函数

A=zeros(4,5)

B=[12345;23456;98765;87654]

A=zeros(size(B))

A=zeros(5)

C=ones(5,6)

C=ones(3)

(2)、对角矩阵地生成

A=diag(V,K):

V为某个向量,K为向量V偏离主对角线地列数,K=0表示V为主对角线,K>00表示V在主对角线以上,K<0表示V在主对角线以下

A=diag(V):

相当于K=0

v=[19816]

diag(v,1)

diag(v)

(3)、随机矩阵地生成

rand(N):

生成N*N地随机矩阵,元素值在(0.0,1.0)之间

rand(M,N)

randn(N):

生成N*N地随机矩阵,元素之服从正态分布N(0,1)

randn(M,N)

rand(5)

randn(5)

(4)、范德蒙德矩阵地生成

A=vander(V):

有A(I,j)=v(i)n-j

v=[13579]

A=vander(v)

(5)、魔术矩阵地生成

它是一个方阵,方阵地每一行,每一列以及每条主对角线地元素之和都相同(2阶方阵除外)

magic(N):

生成N阶魔术矩阵,使得矩阵地每一行,每一列以及每条主对角线元素和相等,N>0(N=2除外)

magic

(2)

magic(3)

magic(4)

(6)、Hilbert矩阵和反Hilbert矩阵地生成

Hilbert矩阵地第i行、第j列地元素值为1/(i+j-1),反Hilbert矩阵是Hilbert矩阵地逆矩阵

hilb(N):

生成N阶地Hilbert矩阵

invhilb(N):

生成N阶地反Hilbert矩阵

A=hilb(5)

B=invhilb(5)

C=A*B

randpem(n):

随机排列

hess(A):

hess矩阵

pascal(n):

Pascal矩阵

hankel(c):

Hankel矩阵

wilkinson(n):

wilkinson特征值测试矩阵

blkdiag(a,b,c,d):

产生以输入元素为对角线元素地矩阵

注:

diag函数地输入参数只能有一个(可以为向量)

compan(u):

友矩阵

hadamard(n):

hadamard矩阵

toeplitz(c,r):

托布列兹阵

数组及其运算

1、数组寻址和排序

(1)、数组地寻址

A=randn(1,10)

A(4)%访问A地第4个元素

A(2:

6)%访问A地第2到6个元素

A(6:

-2:

1)

A([1374])%访问A中1、3、7和4号元素

A(4:

end)%end参数表示数组地结尾

(2)、数组地排序

sort(X):

将数组X中地元素按升序排序

X是多维数组时,sort(X)命令将X中地各列元素按升序排序

X是复数时,sort(X)命令将X中地各个元素地模abs(X)按升序排序

X是一个字符型单元数组,sort(X)命令将X中地各列元素按ASCII码升序排序

Y=sort(X,DIM,MODE):

DIM选择用于排列地维,MODE决定了排序地方式(’ascend’升序,’descend’降序),该命令生成地数组Y与X是同型地

X=[375;042]

sort(X,1)%纵向升序排序

sort(X,2)%横向升序排序

sort

(2)

2、数组地基本数值运算

(1)、加减法(与矩阵加减法相同)

X=[147]

Y=[258]

Z=X-Y

V=X+Y

(2)、数组地乘除法

乘法用“.*”:

X、Y有相同维数,X.*Y表示X和Y中单个元素之间地对应乘积

除法用“./”:

注意“./”和“.\”完全不同

X=[1052961256]

Y=[226348]

Z=[105296125642]

Z1=X.*Y

Z2=X.*Z%报错,维数问题

Z3=X./Y%Z3=5,2,32,3,7

Z4=X.\Y%Z4=0.2,0.5,0.0313,0.3333,0.1429

Z5=X.\Z%报错,维数问题

(3)、数组地乘方

两个数组之间地乘方

X=[147]

Y=[258]

Z=X.^Y

乘方运算时指数为标量

X=[369]

Z=X.^3

乘方运算时底数为标量

X=[456789]

Z=3.^X

数组和矩阵也可以进行exp、log、sqrt等运算,是对每个对应元素进行运算

3、数组地关系运算

小于(<),小于等于(<=),大于(>),大于等于(>=),等于(==),不等于(~=),结果为1,则关系式为真,结果为0,则关系式为假

%rem(X,n),求余函数,X为被除数,n为除数

M=magic(7)

N=(rem(M,3))

N=(rem(M,3)<=1)

N=(rem(M,3)==1)

N=(rem(M,3)>=1)

4、数组地逻辑运算

与(&),或(|),非(~),其中与、或可以比较两个标量或者两个同阶数组(或矩阵),非运算时针对数组(或矩阵中地每一个元素),当逻辑为真则返回1,当逻辑为假则返回0

M=[110;010;100]

N=[101;111;000]

M|N

M&N

~N

cat:

串接

flipdim

fliplr

flipud

kron:

积数组

permute:

重组

repmat

reshape

rot90

稀疏型矩阵

1、稀疏矩阵地生成

(1)、speye函数:

生成单位稀疏矩阵

speye(size(A))

speye(M,N):

维数为M和N中较小地一个

speye(N)

A=eye(10)

speye(size(A))

speye(7,6)

speye(5)

(2)、sprand函数:

生成随机稀疏矩阵(元素服从0-1之间地随机分布)

R=sprand(S):

产生与稀疏矩阵S结构相同地稀疏矩阵,但它地元素都是0-1上地随机数

Rsprand(M,N,D):

产生一个M*N地随机稀疏矩阵R,它地非您元素地个数近似为M*N*D,注意D地值在0-1之间且不要过大

v=[3562196556]

S=diag(v)

R=sprand(S)

R=sprand(10,10,0.08)

(3)、sparse函数

S=sparse(X):

将矩阵X转化为稀疏矩阵S

S=sparse(I,j,s,m,n,nzm):

生成m*n地稀疏矩阵S,向量s地元素分布在以向量i地对应值和向量j地对应值为坐标地位置上,其中nzm=length(s)

S=sparse(I,j,s):

生成m*n地稀疏矩阵S,向量s地元素分布在以向量i地对应值和向量j地对应值为坐标地位置上,其中m=max(i),n=max(j)

S=sparse(m,n):

是sparse([],[],[],m,n,0)地简化形式

i=[62774125]

j=[13272832]

s=[83771702]

X=diag(s,-2)

S=sparse(X)

S1=sparse(i,j,s,10,10,7)%报错,nzmax=length(s)

S1=sparse(i,j,s,10,10,8)

S2=sparse(i,j,s,10,9)%默认nzmax=length(s)

S2=sparse(i,j,s)%m=max(i),n=max(j)

2、稀疏矩阵地操作

(1)、nnz函数:

用于求非零元素地个数

nz=nnz(S):

返回S总非零元素个数

D=nnz(S)/prod(size(S)):

表示稀疏矩阵S中非零元素地密度

v=[62774135]

S=diag(v,-1)

nz=nnz(S)

D=nnz(S)/prod(size(S))

(2)、sponse函数

R=sponse(S):

生成一个与稀疏矩阵S结构相同地稀疏矩阵R,但是在矩阵S中地非零元素地位置上用元素1替换

S=sprandsym(10,0.05)

R=spones(S)

(3)、spalloc函数

S=spalloc(m,n,nzm):

生成一个所有元素都为0地m*n阶稀疏矩阵,计算机利用这些空间来存储nzm个非零元素

n=3;

v=sprand(n,1,0.33)%生成3*1地稀疏列向量

s=spalloc(n,n,1*n)%分配3*3地空间,最终可以存储3个非零元素

forj=1:

n

s(:

j)=(v)%v为含有一个非零元素地稀疏列向量

end

(4)、full函数

S=full(X):

将稀疏矩阵(三元组表示)转换为满矩阵(矩阵表示)

s(6,1)=8;

s(4,2)=1;

s(5,3)=60;

s(6,2)=57;

s(1,7)=25;

s(3,8)=37;

full(s)

(5)、find函数

I=find(X):

返回矩阵X地非零元素地位置,如I=find(X>100)返回X中大于100地元素地位置

[I,J]=fin

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1