matlab中被另一个矩阵索引的矩阵?
我有以下矩阵:matlab中被另一个矩阵索引的矩阵?,matlab,matrix,indexing,Matlab,Matrix,Indexing,我有以下矩阵: 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
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]
A=[0.5469 0.2785 0.0975 0.6324;
0.9134 0.1270 0.9058 0.8147]
当我将D
条目更改为另一个值时,我会得到A
的不同配置,例如,如果我输入:
D=[ 8 7;
6 5;
4 3;
2 1];
然后A
变成:
A=[0.8147 0.9058 0.1270 0.9134;
0.6324 0.0975 0.2785 0.5469]
A=[0.5469 0.2785 0.0975 0.6324;
0.9134 0.1270 0.9058 0.8147]
有人知道这种索引是什么吗?为了更清楚,让我们把你的
v
重新定义为
v = 10:10:80
(即v=[102030050607080];
)
现在什么时候
D=[8 7;
6 5;
4 3;
2 1];
然后
A(D)=v
A =
80 70 60 50
40 30 20 10
让我们看看它是如何工作的。因此,首先,当你用D
索引A
时,D
变平,因此A(D)=v
与A(D(:)=v
(测试!)相同
所以我们要把它一个元素一个元素地分解成A(D(1))=v(1)
,在替换D(1)
和v(1)
后,它是A(8)=10,因此最后一个元素是10。让我们进一步看一些元素<代码>A(D(4))=v(4)
变成A(2)=40
。但是哪个元素是A(2)
?线性索引首先对行进行倒计时(列主顺序),即
因此A(2)
处于(2,1)
位置等。它是线性索引: