2017-03-06 45 views
0

我有一個20x1雙數組A和一個1000x1雙數組B從另一個數組中的索引獲取數組的值:Matlab

我想陣列C,在其中B值被用來索引值A像這樣陣列C將1000x1雙:

C(1) = A(B(1)) 
C(2) = A(B(2)) 
... 
C(i) = A(B(i)) 
... 
c(1000) = A(B(1000)) 

這可怎麼辦呢?

+0

標題是非常誤導。我以爲你正在嘗試幾個Matlab實例。 – Bernhard

回答

3

你並不需要爲這個循環,就可以直接使用:

C = A(B) 

這利用了MATLAB的矩陣索引,這是在使用數組代替整數時在MATLAB中處理索引的方式。

在文檔請看:https://uk.mathworks.com/help/matlab/math/matrix-indexing.html

例如:

A = [11 12 13]; 
B = [1 2 3 1 2 3 3 2 1]; 
C = A(B) 

C = 

11 12 13 11 12 13 13 12 11 

確保乙只包含其是A(的有效索引不小於1或大於A的長度的整數)。

0

我做到了使用循環,如下圖所示,不知道這是理想的解決方案:

C = zeros(1000,1); 

for i = 1:1000 
    C(i,1) = A(B(i)); 
end 
相關問題