2013-05-03 168 views
1

我有以下矩阵:矩阵由matlab中的另一个矩阵索引?

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)=vA变为:

A=[0.8147 0.9058 0.1270 0.9134; 
    0.6324 0.0975 0.2785 0.5469] 

当我改变D条目到另一个值,例如,如果我把

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] 

是否有任何人知道这是什么类型的索引是什么?

+5

它是线性索引:http://www.mathworks.com/help /matlab/math/matrix-indexing.html#f1-85511 – Dan 2013-05-03 13:15:10

回答

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通过DD被夷为平地所以,首先使A(D) = v相同A(D(:)) = v(测试一下吧!),并

D(:) 

ans = 

    8 
    6 
    4 
    2 
    7 
    5 
    3 
    1 

所以对于其替代D(1)后它分解元素通过我们要去A(D(1)) = v(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)位置等等

+1

非常感谢你 – 2013-05-04 00:36:12