矩阵
1、矩阵的建立
1、1直接输入创建矩阵
以左方括号,以逗号或空格为间隔,行与行之间用分号或单击回车键隔开,最后以右方括号结尾即可。另外可以用单引号界定的字符或字符串可以创建字符矩阵。
>> A=[1,2,3;4,5,6;7,8,9]
A =
1 2 3
4 5 6
7 8 9
>> B=[1.1 1.2 1.3;1.4 1.5 1.6]
B =
1.10001.20001.3000
1.40001.50001.6000
>> C='luoluo'
C =
luoluo
1、2矢量法创建矩阵
适量可以由冒号和数字产生,格式:矢量名=初值:增量:终值 矢量是从初值开始,以增量为步长,直到不超过终值的所有元素所构成的序列,注:只能构建一维行数组,
>> A=1:2:10
A =
1 3 5 7 9
1、3函数法创建矩阵
[]:空矩阵
eye:单位矩阵
ones:全部元素都为一的常数矩阵
rand:元素服从0~1之间均匀分布的随机矩阵
zeros:全部元素都为零的矩阵
magic:模仿矩阵
randperm:随机排列整数矩阵
randn:元素从零均值单位方差正太分布的随机矩阵
>> A=[]
A =
[]
>> B=eye(3,4)
B =
1 0 0 0
0 1 0 0
0 0 1 0
>> C=4*ones(5)
C =
4 4 4 4 4
4 4 4 4 4
4 4 4 4 4
4 4 4 4 4
4 4 4 4 4
>> D=rand(2,3)
D =
0.81470.12700.6324
0.90580.91340.0975
>> E=randn(2,3)
E =
-0.43363.5784 -1.3499
0.34262.76943.0349
>> F=zeros(3,4)
F =
0 0 0 0
0 0 0 0
0 0 0 0
>> G=randperm(5)
G =
4 5 2 3 1
>> O=magic(4)
O =
16 2 313
51110 8
9 7 612
41415 1
2矩阵的基本运算
2、1矩阵与标量的运算
>> A=[1 2 3;4 5 6];
>> b=3;
>> c=A+b
c =
4 5 6
7 8 9
>> D=A*b
D =
3 6 9
121518
>> E=A/b
E =
0.33330.66671.0000
1.33331.66672.0000
>> G=A.^b
G =
1 827
64 125 216
2、2矩阵与矩阵的运算
加法运算:两个矩阵的维数完全相同
乘法运算:两个矩阵的维数相容(A的行数等于B的列数)
除法运算:左除,右除
点运算:按照数组运算规则直接运算,矩阵的对应元素直接运算,有.* ./ .\三种。
>> A=[1 2;3 4];
>> B=[5 6;7 8];
>> C=A*B
C =
1922
4350
>> D=A.*B
D =
512
2132
>> F=A\B
F =
-3-4
4 5
>> E=A/B
E =
3.0000 -2.0000
2.0000 -1.0000
>> H=A.\B
H =
5.00003.0000
2.33332.0000
>> K=A./B
K =
0.20000.3333
0.42860.5000
3、矩阵的操作
3、1元素操作
通过对元素的下标进行
>> A=[1 2 3;4 5 6;7 8 9;11 12 13];
>> A(1,2)=1
A =
1 1 3
4 5 6
7 8 9
111213
3、2提取子块
用冒号表达式,冒号表示全部,
>> B=A(1:3,:)
B =
1 1 3
4 5 6
7 8 9
>> C=A(:,1:2)
C =
1 1
4 5
7 8
1112
3、3矩阵和并
C=[A;B]:A和B列数相同
C=[A,B]:A和B行数相同
3、4矩阵的转置
用'(单引号)进行矩阵的转置运算
3、5矩阵的展开
(3,4,5举例)
B=A(:)
>> A=[1 3 5;7 9 11];
>> B=[2 4 6];
>> C=[1 2 3;5 6 7];
>> D=[A;B]
D =
1 3 5
7 911
2 4 6
E=[A,C]
E =
1 3 5 1 2 3
7 911 5 6 7
>> D=D'
D =
1 7 2
3 9 4
511 6
>> F=D(:)
F =
1
3
5
7
9
11
2
4
6
3、6矩阵的线性变换
函数:
diag(A):提取A的对角元素
diag(A,k):提取A的第K条元素
fliplr(A):矩阵A左右翻转
triu(A):提取A的上三角矩阵
tril(A):提取A的下三角矩阵
flipud(A):矩阵A上下翻转
>> A=magic(3)
A =
8 1 6
3 5 7
4 9 2
>> Adiag=diag(A)
Adiag =
8
5
2
>> Atril=tril(A)
Atril =
8 0 0
3 5 0
4 9 2
>> flipud(A)
ans =
4 9 2
3 5 7
8 1 6
4、复数和复数矩阵
1、复数
>> Z=1+2i
Z =
1.0000 + 2.0000i
>> Z=3*exp(i*3.14)
Z =
-3.0000 + 0.0048i
2、复数矩阵
>> a=[1+2i 3+4i;5+6i 7+8i]
a =
1.0000 + 2.0000i 3.0000 + 4.0000i
5.0000 + 6.0000i 7.0000 + 8.0000i
>> a=[1 3;5 7]+i*[2 4;6 8]
a =
1.0000 + 2.0000i 3.0000 + 4.0000i
5.0000 + 6.0000i 7.0000 + 8.0000i
5、稀疏矩阵
sparse(A):A为完全矩阵,将其转化为稀疏矩阵。
sparse(m,n):生成mxn介所有系数为零的稀疏矩阵。
sparse(u,v,s):u,v,s为等长的矢量,u,v是s中元素行和列的下标。建立一个u行、v列和以S为元素的稀疏矩阵。
speye(m,n):生成mxn阶的稀疏矩阵,只有对角线元素为1。
full(A) :A为稀疏矩阵。将稀疏矩阵转化为完全矩阵
[m,n,s]=find(A):A为稀疏矩阵,查看稀疏矩阵,m,n为非零元素下标,s为非零元素
>> A=[0 5 0 0 ;0 0 0 0;12 0 0 0;0 22 0 9];
>> B=sparse(A)
B =
(3,1) 12
(1,2) 5
(4,2) 22
(4,4) 9
>> [m,n,s]=find(B)
m =
3
1
4
4
n =
1
2
2
4
s =
12
5
22
9
>> c=full(B)
c =
0 5 0 0
0 0 0 0
12 0 0 0
022 0 9
6、关系运算与逻辑运算
1、关系运算符
>> A=[1 3 5 6 7 8 9];
>> B=A>4
B =
0 0 1 1 1 1 1
2、逻辑运算符
>> a=[1 -3 5;0 10 0];
>> b=[1 50 0;-3 0.4 12];
>> c=a&b
c =
1 1 0
0 1 0
>> d=a|b
d =
1 1 1
1 1 1
>> ~b
ans =
0 0 1
0 0 0
>> xor(a,b)
ans =
0 0 1
1 0 1
>> any(a)
ans =
1 1 1
>> all(b)
ans =
1 1 0