2013-05-03 218 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