我有以下矩阵:
A=zeros(2,4);
D=[ 1 2;
3 4;
5 6;
7 8];
v=rand(1,8);
例如:
v= [0.8147 0.9058 0.1270 0.9134 0.6324 0.0975 0.2785 0.5469]
现在,当我运行A(D)=v
时,A
变为:
A=[0.8147 0.9058 0.1270 0.9134;
0.6324 0.0975 0.2785 0.5469]
当我将D
条目更改为其他值时,我会得到A
的不同配置,例如,如果我放入:
D=[ 8 7;
6 5;
4 3;
2 1];
然后A
变为:
A=[0.5469 0.2785 0.0975 0.6324;
0.9134 0.1270 0.9058 0.8147]
有人知道这种索引是什么吗?
答案 0 :(得分:2)
因此,为了更清楚,请将v
重新定义为
v = 10:10:80
(即v = [10 20 30 40 50 60 70 80];
)
现在何时
D=[8 7;
6 5;
4 3;
2 1];
然后
A(D)=v
A =
80 70 60 50
40 30 20 10
让我们看看它是如何工作的。首先,当您按A
索引D
时,D
会变平,因此A(D) = v
与A(D(:)) = v
相同(测试它!)和
D(:)
ans =
8
6
4
2
7
5
3
1
因此,为了逐个分解,我们将A(D(1)) = v(1)
替换为D(1)
并且v(1)
为A(8) = 10
,因此最后一个元素是10.进一步看几个元素。 A(D(4)) = v(4)
成为A(2) = 40
。但是哪个元素是A(2)
?良好的线性索引首先按行排列(列主要排序),即
A(1) == A(1,1)
A(2) == A(2,1)
A(3) == A(1,2)
A(4) == A(2,2)
A(5) == A(1,3)
A(6) == A(2,3)
etc...
因此A(2)
位于(2,1)
位置......