问题:矩阵A,矩阵B,A(B)什么含义
当矩阵B为double
whos b
Name Size Bytes Class Attributes
b 2x2 32 double
实验如下:
A
结果:
>> A(b)
ans =
1 2
3 1
A =
1 1 1
1 2 3
1 3 6
b =
4 5
6 7
总的来说,这是一个不怎么规范的写法,官方的解释懒得去找了。
就结果而言,会得到一个与b同型的矩阵,这个矩阵中的元素来自A,具体的对应规则为A(b(i,j)),1<=i<=size(b,1),1<=j<=size(b,2).
就上例而言:b是一个 2 by 2 的矩阵,所以A(b)也是一个 2 by 2 的矩阵。
ans(1,1)=A(b(1,1))=A(4)=1,这是因为matlab中的数组元素在内存中的索引是按照列来排序的,如果把A向量化,会的到这样的结果
A(:)=1 1 1 1 2 3 1 3 6
查第四个数正好是1,同理
- ans(1,2)=A(b(1,2))=A(5)=2,
- ans(2,1)=A(b(2,1))=A(6)=3,
- ans(2,2)=A(b(2,2))=A(7)=1,
如果有
c
那么结果应该为
ans =
3 2
1 6
当矩阵c为logical时
whos c
Name Size Bytes Class Attributes
c 2x2 4 logical
如下:
c = (A > 2);
c(1,1) = 1;
A(c)
c =
1 0 0
0 0 1
0 1 1
A(C) =
1
3
3
6
结论:
- 没看出来有啥用?
- 要想不出错,一个前提是size(b)的每一个维度都应该小于size(A),