在MATLAB中矩阵的关系求解是非常方便快捷的。下面我们从基础知识开始学习。
矩阵的定义:一般而言,所谓的矩阵就是一组数的全体,在()内排列成m行n列(横为行,纵为列)的一个数表,并称它为m*n的阵。在MATLAB中的输入法:
元素之间可用空格或逗号隔开;
>> a=[1 2 3;4 5 6;7 8 9;10 11 12]
a =
1 2 3
4 5 6
7 8 9
10 11 12
向量法产生矩阵:向量名=初值:增量:终值
>> a=1:2:10
a =
1 3 5 7 9
函数法创建矩阵:
[] 空矩阵
eye 单位矩阵
ones 全部元素都为1的常数矩阵
rand 元素服从0和1之间的均匀分布的随机矩阵
randn 元素服从0均值单位方差正太分布的随机矩阵
zeros 全部元素都为0的矩阵
>> a=[]
a =
[]
>> a=eye(3,3)
a =
1 0 0
0 1 0
0 0 1
>> a=ones(3,4)
a =
1 1 1 1
1 1 1 1
1 1 1 1
>> a=rand(2,3)
a =
0.8147 0.1270 0.6324
0.9058 0.9134 0.0975
>> a=randn(3,4)
a =
-0.4336 2.7694 0.7254 -0.2050
0.3426 -1.3499 -0.0631 -0.1241
3.5784 3.0349 0.7147 1.4897
>> a=zeros(4,5)
a =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
矩阵的简单运算:求幂和乘积
>> a=[1 4 5;2 3 6; 6 7 8; 9 7 5]
a =
1 4 5
2 3 6
6 7 8
9 7 5
>> a.^2
ans =
1 16 25
4 9 36
36 49 64
81 49 25
>> a=[1 2 3;4 5 6;7 8 9]
a =
1 2 3
4 5 6
7 8 9
>> a*a
ans =
30 36 42
66 81 96
102 126 150
注意:在乘积运算中要使矩阵的维度相同方可进行。
矩阵元素的引用
对矩阵改革元素行,列提取:变量名(行,列)
>> a=[1 2 3;4 5 6; 7 8 9]
a =
1 2 3
4 5 6
7 8 9
>> a(2,3)
ans =
6
提取分别矩阵行元素和列元素
>> a=[1 2 3;4 5 6; 7 8 9]
a =
1 2 3
4 5 6
7 8 9
>> a(2:3,:)
ans =
4 5 6
7 8 9
>> a(:,1:2)
ans =
1 2
4 5
7 8
向量标识方式:a(vr,vc) vr=[i1 i2 i3…in] vc=[j1 j2 j3…jn],分别含有矩阵a的行号和列号的单调向量,a(vr,vc)是取出矩阵a第i1 i2 i3…in行和第j1 j2 j3…jn列,交叉处的元素所构成的新矩阵。
>> a=[1 2 3;4 5 6;7 8 9]
a =
1 2 3
4 5 6
7 8 9
>> vr=[1,2]
vr =
1 2
>> vc=[2,3]
vc =
2 3
>> A=a(vr,vc)
A =
2 3
5 6
矩阵的拆分:
提取矩阵的某一部分,可以使用“冒号表达式”。在MATLAB中“ :”表示全部。
>> a=[1 2 3;4 5 6;7 8 9;10 11 12]
a =
1 2 3
4 5 6
7 8 9
10 11 12
>> b=a(1:3,:)
b =
1 2 3
4 5 6
7 8 9
>> c=a(:,1:2)
c =
1 2
4 5
7 8
10 11
矩阵的合并:
扩展行合并必须列数相等C=[A;B];
扩展列合并必须行数相等C=[A,B];
>> a=[1 2 3;4 5 6;7 8 9]
a =
1 2 3
4 5 6
7 8 9
>> b=[10 11 12]
b =
10 11 12
>> c=[a;b]
c =
1 2 3
4 5 6
7 8 9
10 11 12
d =
1
2
3
>> c=[a,d]
c =
1 2 3 1
4 5 6 2
7 8 9 3
矩阵的转置;
定义:简单的认为将行转为列,将列转为行。
在MATLAB中使用“ ’ ”单引号表达式。
c =
1 2 3 1
4 5 6 2
7 8 9 3
>> c=c'
c =
1 4 7
2 5 8
3 6 9
1 2 3
矩阵的展开:
即将矩阵元素依次按列排开,在MATLAB中用“ : ”表达式。
c =
1 4 7
2 5 8
3 6 9
1 2 3
>> d=c(:)
d =
1
2
3
1
4
5
6
2
7
8
9
3
矩阵的修改和删除:
修改:要修改已定义的矩阵,只需对已存在的元素或字块重新赋值即可;
>> a=[1 2 3;4 5 6;7 8 9]
a =
1 2 3
4 5 6
7 8 9
>> a(1,:)=[0 1 2]
a =
0 1 2
4 5 6
7 8 9
>> a(:,2)=[2 4 6]
a =
0 2 2
4 4 6
7 6 9
删除:删除 矩阵行或列只需将矩阵的某行,某列赋值为控制的方式,删除行或列的部分元素会出错。
>> a=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 22 23 24 25]
a =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
>> a(:,[2,3])=[]
a =
1 4 5
6 9 10
11 14 15
16 19 20
21 24 25
>> a([1,2],:)=[]
a =
11 14 15
16 19 20
21 24 25
数组的运算:
在数学上一维数组相当于只有一行或者只有一列的矩阵;
>> a=[1 2 3 4 5]
a =
1 2 3 4 5
>> b=[1;2;3;4;5]
b =
1
2
3
4
5
二维数组用矩阵的方式进行表示,在此不进行赘述;
数组的数学运算:
数组与矩阵同样具有加减乘除幂运算
>> a=[1 2 3; 4 5 6]
a =
1 2 3
4 5 6
>> b=[2 4 6;8 10 12]
b =
2 4 6
8 10 12
>> a+b
ans =
3 6 9
12 15 18
>> b-a
ans =
1 2 3
4 5 6
>> a.*b
ans =
2 8 18
32 50 72
>> a./b
ans =
0.5000 0.5000 0.5000
0.5000 0.5000 0.5000
>> a.\b
ans =
2 2 2
2 2 2
>> a.^2
ans =
1 4 9
16 25 36
数组的关系和逻辑运算:
关系有:">","<",">=","<=","==","~=",在关系运算中,关系成立结果为1(真),关系不成立结果为0(假)。
>> a=[1 9 5;8 3 6]
a =
1 9 5
8 3 6
>> b=[1 6 5;9 4 7]
b =
1 6 5
9 4 7
>> a==b
ans =
2×3 logical 数组
1 0 1
0 0 0
>> a>=b
ans =
2×3 logical 数组
1 1 1
0 0 0
>> a<=b
ans =
2×3 logical 数组
1 0 1
1 1 1
>> a>b
ans =
2×3 logical 数组
0 1 0
0 0 0
>> a<b
ans =
2×3 logical 数组
0 0 0
1 1 1
>> a~=b
ans =
2×3 logical 数组
0 1 0
1 1 1
逻辑运算:
数组的逻辑运算有&与,|或,~非,只有非0(1)和0两种元素。
>> a=[2 3 0]
a =
2 3 0
>> b=[0 1 2]
b =
0 1 2
>> a&b
ans =
1×3 logical 数组
0 1 0
>> a|b
ans =
1×3 logical 数组
1 1 1
>> ~a
ans =
1×3 logical 数组
0 0 1
>> ~b
ans =
1×3 logical 数组
1 0 0
注:以上代码内容均需在MATLAB中进行编写运行。
以上为MATLAB中关于矩阵和数组的基础内容希望给初学者带来帮助,若有编辑失误请谅解,在讨论区留言一起解决。