MATLAB入门(二)
8.矩阵及运算
1. 数组
MATLAB的运算事实上是以数组 (array) 及矩阵 (matrix) 方式在做运算。
建立一个数组时,如果是要个别键入元素,须用中括号[ ] 将元素置于其中。数组为一维元素所构成,而矩阵为多维元素所组成,例如
» x=[1 2 3 4 5 6 7 8] ;% 一维 1x8 阵列
» x = [1 2 3 4 5 6 7 8; 4 5 6 7 8 9 10 11] ; % 二维 2x8 矩阵,以;区隔各列的元素
» x = [1 2 3 4 5 6 7 8 % 二维 2x8 矩阵,各列的元素分二行键入
4 5 6 7 8 9 10 11] ;
» x(3)% x的第三个元素
ans =
2
» x([1 2 5])% x的第一、二、五个元素
ans =
1 4 3
x(1:5)% x的第前五个元素
ans =
1 4 2 5 3
» x(10:end)% x的第十个元素后的元素
ans =
8 6 9 7 10 8 11
» x(10:-1:2)% x的第十个元素和第二个元素的倒排
ans =
8 5 7 4 6 3 5 2 4
» x(find(x>5))% x中大于5的元素
ans =
6
7
8
6
9
7
10
8
11
» x(4)=100%给x的第四个元素重新给值
x =
1 2 3 4 5 6 7 8
4 100 6 7 8 9 10 11
» x(3)=[]% 删除第三个元素
x =
Columns 1 through 12
1 4 100 3 6 4 7 5 8 6 9 7
Columns 13 through 15
10 8 11
» x(16)=1% 加入第十六个元素
x =
Columns 1 through 12
1 4 100 3 6 4 7 5 8 6 9 7
Columns 13 through 16
10 8 11 1
2 建立数组
上面的方法只适用于元素不多的情况,但是当元素很多的时候,则须采用以下的方式:
» x=(0:0.02:1); % 以:起始值=0、增量值=0.0.2、终止值=1的矩阵
» x=linspace(0,1,100); % 利用linspace,以区隔起始值=0终止值=1之间的元素数目=100
»a=[]%空矩阵
a =
[]
» zeros(2,2)%全为0的矩阵
ans =
0 0
0 0
» ones(3,3) %全为1的矩阵
ans =
1 1 1
1 1 1
1 1 1
» rand(2,4);随机矩阵
»a=1:7, b=1:0.2:5;%更直接的方式
»c=[b a]; %可利用先前建立的阵列 a 及阵列 b ,组成新阵列
» a=1:1:10;
» b=0.1:0.1:1;
» a+b*I%复数阵列
ans =
Columns 1 through 4
1.0000 + 0.1000i 2.0000 + 0.2000i 3.0000 + 0.3000i 4.0000 + 0.4000i
Columns 5 through 8
5.0000 + 0.5000i 6.0000 + 0.6000i 7.0000 + 0.7000i 8.0000 + 0.8000i
Columns 9 through 10
9.0000 + 0.9000i 10.0000 + 1.0000i
在MATLAB的内部资料结构中,每一个矩阵都是一个以行为主(Column-oriented)的阵列(Array)因此对於矩阵元素的存取,我们可用一维或二维的索引(Index)来定址
3 子矩阵
通过一个矩阵产生另一个矩阵的方法(上面已经有例子)
假如一个矩阵A
则 A(m1:m2 ,n1:n2)为由A的第m1到m2行,第n1列到n2列组成的子矩阵。
9.矩阵的运算
经典的算术运算符见下表:
|
经 典 的 算 术 运 算 符 |
||
|
|
||
|
|
运 算 符 |
MATLAB表达式 |
|
加 |
+ |
a+b |
|
减 |
- |
a-b |
|
乘 |
* |
a*b |
|
除 |
/ 或 " |
a/b或a"b |
|
幂 |
^ |
a^b |
前面我们已经把经典的算术运算符告诉大家了,在这里同样也可以使用。
» a=1:1:10;
» b=0:10:90;
» a+b
ans =
1 12 23 34 45 56 67 78 89 100
» a-b
ans =
1 -8 -17 -26 -35 -44 -53 -62 -71 -80
» a.*b%注意这里a后加了个“.”
ans =
0 20 60 120 200 300 420 560 720 900
» a/b
ans =
0. 1158
» a"b
ans =
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 9
» b./a
ans =
Columns 1 through 7
0 5.0000 6.6667 7.5000 8.0000 8.3333 8.5714
Columns 8 through 10
8.7500 8.8889 9.0000
» a."b
ans =
Columns 1 through 7
0 5.0000 6.6667 7.5000 8.0000 8.3333 8.5714
Columns 8 through 10
8.7500 8.8889 9.0000
» a.^2
ans =
1 4 9 16 25 36 49 64 81 100
说明:在这里特别要注意一下有没有加点“.”之间的区别,这些算术运算符所运算的两个阵列是否需要长度一致。
矩阵转置运算
通过在矩阵变量后加’的方法来表示转置运算
?a=1:1:10;
?b=0:10:90;
?a'
ans =
1
2
3
4
5
6
7
8
9
10
?c=a+b*i;
?c'
ans =
1.0000
2.0000 -10.0000i
3.0000 -20.0000i
4.0000 -30.0000i
5.0000 -40.0000i
6.0000 -50.0000i
7.0000 -60.0000i
8.0000 -70.0000i
9.0000 -80.0000i
10.0000 -90.0000i

浙公网安备 33010602011771号