一、基本技术
1)MATLAB索引或引用(MATLAB Indexing or Referencing)
在MATLAB中有三种基本方法可以选取一个矩阵的子阵。它们分别是下标法,线性法和逻辑法(subscripted, linear,
and
logical)。
1.1)下标法
非常简单,看几个例子就好。
A = 6:12;
A([3,5])
ans =
8 10
A([3:2:end])
ans =
8 10 12
A = [11 14 17;12 15 18;13 16
19];
A(2:3,2)
ans =
15
16
1.2)线性法
二维矩阵以列优先顺序可以线性展开,可以通过现行展开后的元素序号来访问元素。
A = [11 14 17;12 15 18;13 16
19];
A(6)
ans =
16
A([3,1,8])
ans =
13 11 18
A([3;1;8])
ans =
13
11
18
1.3)逻辑法
用一个和原矩阵具有相同尺寸的0-1矩阵,可以索引元素。在某个位置上为1表示选取元素,否则不选。得到的结果是一个向量。
A = 6:10;
A(logical([0 0 1 0 1]))
ans =
8 10
A =[1 2;3 4];
B = [1 0 0 1];
A(logical(B))
ans =
1 4
2)数组操作和矩阵操作(Array Operations vs. Matrix
Operations)
对矩阵的元素一个一个孤立进行的操作称作数组操作;而把矩阵视为一个整体进行的运算则成为矩阵操作。MATLAB运算符*,/,\,^都是矩阵运算,而相应的数组操作则是.*,
./, .\, .^
A=[1 0 ;0 1];
B=[0 1 ;1 0];
A*B % 矩阵乘法
ans =
0 1
1 0
A.*B % A和B对应项相乘
ans =
0 0
0 0
3)布朗数组操作(Boolean Array
Operations)
对矩阵的比较运算是数组操作,也就是说,是对每个元素孤立进行的因此其结果就不是一个“真”或者“假”,而是一堆“真假”。这个结果就是布朗数组。
D = [-0.2 1.0 1.5 3.0 -1.0 4.2
3.14];
D >= 0
ans =
0 1 1 1 0 1
1
如果想选出D中的正元素:
D = D(D>0)
D =
1.0000 1.5000 3.0000 4.2000 3.1400
除此之外,MATLAB运算中会出现NaN,Inf,-Inf。对它们的比较参见下例
Inf==Inf返回真
Inf<1返回假
NaN==NaN返回假
同时,可以用isinf,isnan判断,用法可以顾名思义。
在比较两个矩阵大小时,矩阵必须具有相同的尺寸,否则会报错。这是你用的上size和isequal,isequalwithequalnans(R13及以后)。
4)从向量构建矩阵(Constructing Matrices from
Vectors)
在MATLAB中创建常数矩阵非常简单,大家经常使用的是:
A =
ones(5,5)*10
但你是否知道