matlab矩阵操作汇总.docx
《matlab矩阵操作汇总.docx》由会员分享,可在线阅读,更多相关《matlab矩阵操作汇总.docx(20页珍藏版)》请在冰点文库上搜索。
![matlab矩阵操作汇总.docx](https://file1.bingdoc.com/fileroot1/2023-6/22/f013813c-a501-4780-afb5-a3a7a21b9ce9/f013813c-a501-4780-afb5-a3a7a21b9ce91.gif)
matlab矩阵操作汇总
matlab矩阵操作大全
1.1.1数值矩阵的生成
1.实数值矩阵输入
MATLAB的强大功能之一体现在能直接处理向量或矩阵。
当然首要任务
是输入待处理的向量或矩阵。
不管是任何矩阵(向量),我们可以直接按行方式输入每个元素:
同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。
所有元素处于一方括号([])内;当矩阵
是多维(三维以上),且方括号内的元素是维数较低的矩阵时,会有多
重的方括号。
如:
>>Time=[1112
12
34
5678910]
Time=
11121234
56
78
910
>>X_Data=[2.32
3.43;
4.37
5.98]
X_Data=
2.433.43
4.375.98
>>vect_a=[12345]
vect_a=
12~345
>>Matrix_B=[123;
>>234;345]
Matrix_B=123
234
345
>>Null_M=[]%生成一个空矩阵
2.复数矩阵输入
复数矩阵有两种生成方式:
第一种方式
1/13
例1-1
>>a="2".7。
b=13/25
sin(pi/4),a+5*b,3.5+1]
C=
1.0000
0.7071
>>C二[1,2*a+i*b,b*sqrt(a)
5.4000+0.5200i0.8544
5.30004.5000
第2种方式
例1-2
>>R=[123。
456],M=[111213。
141516]
R=
I23
456
M=
II1213
141516
>>CN="R"+i*M
CN=
1.0000+11.0000i2.0000+12.0000i3.0000+13.0000i
4.0000+14.0000i5.0000+15.0000i6.0000+16.0000i
1.1.2符号矩阵的生成
在MATLAB中输入符号向量或者矩阵的方法和输入数值类型的向量或
者矩阵在形式上很相像,只不过要用到符号矩阵定义函数sym,或者是
用到符号定义函数syms,先定义一些必要的符号变量,再像定义普通矩阵一样输入符号矩阵。
1.用命令sym定义矩阵:
这时的函数sym实际是在定义一个符号表达式,这时的符号矩阵中的
元素可以是任何的符号或者是表达式,而且长度没有限制,只是将方括号置于用于创建符号表达式的单引号中。
如下例:
>>sym_matrix
=sym('[abc;Jack,
HelpMe!
,
NOWAY!
],')
sym_matrix=
[ab
c]
[JackHelpMe!
NOWAY!
]
>>sym_digits:
=sym('[123;abc;
sin(x)cos
,(y)tan(z)]')
sym_digits=
[1-2
3]
[ab
c]
[sin(x)cos
(y)tan(z)]
2.用命令syms定义矩阵
先定义矩阵中的每一个元素为一个符号变量,而后像普通矩阵一样输入
符号矩阵。
例1-4
>>syms
a
bc;
>>M1=
sym
('Classical');
>>M2=
sym
('Jazz');
>>M3=
sym
('Blues')
>>syms_matrix=[abc;M1,M2,M3;int2str([235])]syms_matrix=
[abc]
[ClassicalJazzBlues]
[235]
把数值矩阵转化成相应的符号矩阵。
数值型和符号型在MATLAB中是不相同的,它们之间不能直接进行转
化。
MATLAB提供了一个将数值型转化成符号型的命令,即sym。
例1-5
>>Digit_Matrix=[1/3sqrt
(2)3.4234;exp(0.23)log(29)23A
(-11.23)]
>>Syms_Matrix=sym(Digit_Matrix)
结果是:
Digit_Matrix=
3.4234
0.0000
0.33331.4142
1.25863.3673
Syms_Matrix=
5174709270083729*2八(-103)]
注意:
矩阵是用分数形式还是浮点形式表示的,将矩阵转化成符号矩阵
后,都将以最接近原值的有理数形式表示或者是函数形式表示。
1.1.3大矩阵的生成
对于大型矩阵,一般创建M文件,以便于修改:
例1-6用M文件创建大矩阵,文件名为example.m
>>example。
>>size(exm)%显示exm的大小
ans二
56%表示exm有5行6列。
1.1.4多维数组的创建
函数cat
格式A="cat"(n,A1,A2,…,Am)
说明n二"1和n"=2时分别构造[A1;A2]和[A1,A2],都是二维数组,
而n=3时可以构造出三维数组。
例1-7
>>A仁[1,2,3。
4,5,6。
7,8,9]。
A2=A1'
>>A4=cat(3,A1,A2,A3)
A4(:
:
1)=
123
456
789
A4(:
:
2)=
147
258
369
A4(:
:
3)=
0-2-4
20-2
420
或用另一种原始方式可以定义:
例1-8
>>A1=[1,2,3。
4,5,6。
7,8,9]。
A2=A1'。
>>A5(:
:
1)=A1,A5(:
:
2)=A2,A5(:
:
3)=A3
A5(:
:
1)=
123
456
789
A5(:
:
2)=
147
258
369
A5(:
:
3)=
0-2-4
20-2
420
A3=A1-A2
A3=A1-A2
1.1.5特殊矩阵的生成
命令全零阵
函数zeros
格式B=zeros(n)
%生成nxn全零阵
B=zeros(m,n)
%生成mxn全零阵
B=zeros([mn])
%生成mxn全零阵
B=zeros(d1,d2,d3
…)%生成d1xd2xd3x全零阵或数组
B=zeros([d1d2d3
…])%生成d1xd2xd3x全零阵或数组
B=zeros(size(A))
%生成与矩阵A相同大小的全零阵
命令单位阵
函数eye
格式Y二eye(n)
%生成nxn单位阵
Y二eye(m,n)
%生成mxn单位阵
Y二eye(size(A))
%生成与矩阵A相同大小的单位阵
命令全1阵
函数ones
格式Y二ones(n)
%生成nxn全1阵
Y二ones(m,n)
%生成mxn全1阵
Y二ones([mn])
%生成mxn全1阵
Y=ones(d1,d2,d3
…)%生成d1xd2xd3x全1阵或数组
Y二ones([d1d2d3
…])%生成d1xd2xd3x全1阵或数组
Y二ones(size(A))
%生成与矩阵A相同大小的全1阵
命令均匀分布随机矩阵
函数rand
格式Y二rand(n)
%生成nxn随机矩阵,其元素在(0,1)内
Y=rand(m,n)
%生成mXn随机矩阵
Y二rand([mn])
%生成mXn随机矩阵
Y=rand(m,n,p,
…)%生成nnxnxpx•随机矩阵或数组
Y二rand([mnp
…])%生成mxnxpx•随机矩阵或数组
Y=rand(size(A))
%生成与矩阵A相同大小的随机矩阵
rand
%无变量输入时只产生一个随机数
s=rand('state')
%产生包括均匀发生器当前状态的35个元素的
向量
rand('state',s)
%使状态重置为s
rand('state',0)
%重置发生器到初始状态
rand('state',j)
%对整数j重置发生器到第j个状态
rand('state',sum(100*clock))%每次重置到不同状态
例1-9产生一个
3X4随机矩阵
0.9501
0.4860
0.4565
0.4447
0.2311
0.8913
0.0185
0.6154
0.6068
0.7621
0.8214
0.7919
例1-10
产生一个在区间[10,20]内均匀分布的
>>a二"10"。
b=20。
>>x="a"+(b-a)*rand(4)
x=
19.218119.354710.5789
11.3889
仃.3821
19.1690
13.5287
12.0277
11.7627
14.1027
18.1317
11.9872
>>R="rand"(3,4)
R=
4阶随机矩阵
14.057118.936510.098616.0379
%每次重置到不同状态
s=randn('state',sum(100*clock))
例1-11产生均值为0.6,方差为0.1的4阶矩阵
>>mu="0".6。
sigma二"0".1。
>>x="mu"+sqrt(sigma)*randn(4)x=
0.8311
0.7799
0.1335
1.0565
0.7827
0.5192
0.5260
0.4890
0.6127
0.4806
0.6375
0.7971
0.8141
0.5064
0.6996
0.8527
命令产生随机排列函数randperm
格式
p=randperm(n)
%产生1〜n之间整数的随机排列
例1-12
>>randperm(6)
ans=
3
21546
命令
产生线性等分向量
函数
linspace
格式
y=linspace(a,b)
%在(a,b)上产生100个线性等分点
y=linspace(a,b,n)%在(a,b)上产生
n个线性等分点
命令
产生对数等分向量
函数
logspace
格式
y=logspace(a,b)
%在(
)之间产生50个对数等分向量
y=logspace(a,b,n)y=logspace(a,pi)
命令
计算矩阵中兀素个数
n二numel(a)%返回矩阵A的元素的个数
命令产生以输入元素为对角线元素的矩阵
函数blkdiag
格式out=blkdiag(a,b,c,d,…%产生以a,b,c,d,•为对角线元素的矩阵
例1-13
>>out=blkdiag(1,2,3,4)
out=
1000
0200
0030
0004
命令友矩阵函数compan
格式A=compan(u)%u为多项式系统向量,A为友矩阵,A的第1行元素为-u(2:
n)/u
(1),其中u(2:
n)为u的第2到第n个元素,A为特征值就是多项式的特征根。
例1-14求多项式的友矩阵和根
>>u=[10-76]。
>>A二"compan"(u)%求多项式的友矩阵
A=
0
7
-6
1
0
0
0
1
0
>>
eig(A)
%A的特征值就是多项式的根
ans=
-3.0000
2.0000
1.0000
命令hadamard矩阵
函数hadamard
格式H二hadamard(n)%返回n阶hadamard矩阵
例1-15
>>h="hadamard"(4)
h=
1111
1-11-1
11-1-1
1-1-11
命令Hankel方阵
函数hankel
格式H二hankel(c)%第1列元素为c,反三角以下元素为0
H=hankel(c,r)%第1列元素为c,最后一行元素为r,如果c的最后
一个元素与r的第一个元素不同,交叉位置元素取为c的最后一个元素
例1-16
>>c="1:
3",r=7:
10
c=
123
r=
78910
>>h="hankel"(c,r)
h=
1238
2389
38910
命令Hilbert矩阵
函数hilb
格式H二hilb(n)%返回n阶Hilbert矩阵,其元素为H(i,j)=1/(i+j-1)
例1-17产生一个3阶Hilbert矩阵
>>formatrat%以有理形式输出
>>H="hilb"(3)
H=
11/21/3
1/2
1/31/4
1/3
1/41/5
命令
逆Hilbert矩阵
函数
invhilb
格式
H=invhilb(n)%产生
n阶逆Hilbert矩阵
命令
Magic(魔方)矩阵
函数
magic
格式
M=magic(n)%产生
n阶魔方矩阵
例1-18
>>M="magic"(3)
M=
816
357
492
命令Pascal矩阵
函数pascal
格式A=pascal(n)%产生n阶Pascal矩阵,它是对称、正定矩阵,
它的元素由Pascal三角组成,它的逆矩阵的所有元素都是整数。
A=pascal(n,1)%返回由下三角的Cholesky系数组成的Pascal矩
阵
A=pascal(n,2)
%返回Pascal(n,1)的转置和交换的形式
例1-19
>>A="pascal"(4)
A=
111
123
136
1410
>>A="pascal"(3,1)A=
100
1-10
1-21
>>A="pascal"(3,2)A=
111
-2-10
100
1
4
10
20
命令托普利兹矩阵
函数toeplitz
格式T=toeplitz(c,r)
%生成一个非对称的托普利兹矩阵,将
c作为
第1列,将r作为第1行,其余元素与左上角相邻元素相等
T=toeplitz(r)%用向量r生成一个对称的托普利兹矩阵
例1-20>>c=[12345]。
>>r二[1.52.53.54.55.5]。
格式W=wilkinson(n)%返回n阶Wilkinson特征值测试阵
例1-21
>>W二"wilkinson"(4)
W=
3/2
1
0
0
1
1/2
1
0
0
1
1/2
1
0
0
1
3/2
>>W="wilkinson"(7)
W=
3
1
0
0
0
0
0
1
2
1
0
0
0
0
0
1
1
1
0
0
0
0
0
1
0
1
0
0
0
0
0
1
1
1
0
0
0
0
0
1
2
1
0
0
0
0
0
1
3