2013-12-09 45 views
0

我有一個二維數組,我想用MATLAB創建一維數組,以滿足要求,即一維輸出的每個元素都是由給定索引的值創建的二維數組。實施例2D陣列是如何從二維數組中獲取數據並將其放入一維數組中

A=[2 4 6; 1 9 7.3 4 5] 

和索引1D陣列

X=[1;2;3] 
Y=[1;2;3] 

我想存儲1D陣列與通過建立一維數組的

B=A(x,y) % x,y are index in X and Y matrix 

實施例確定的元素:

X=[1;2;3] 
Y=[1;2;3] 

B=[A(1,1);A(2,2);A(3,3)]=[2; 9; 5] 

這是我的代碼

B=zeros(1,length(A)); 
B=A(...) %I don't know it 

我該如何實現它? 謝謝大家。

回答

0

您可以使用cellfun來做到這一點。您將A轉換爲逐列的單元格,併爲單元格的每個元素執行f

A=[2 4 6; 1 2 7]; 

% some example f funcion that just adds the col_index_A and row_index_A 
f = @(col_index_A, row_index_A) col_index_A + row_index_A; 

% execute f with parameters that come from each column of A 
B = cellfun(@(c) f(c(1), c(2)), num2cell(A, 1)); 

B = 

    3  6 13 
0

我不知道我理解你的問題,但我想你想在一個2×n矩陣應用功能

嘗試

for pos=1:size(a,2) 
    b(pos) = f(a(:,pos)); 
end 
+0

謝謝你的回答。爲了便於理解,我編輯了它 – user3051460

3

您正在尋找sub2ind

A=[2 4 6; 1 9 7; 3 4 5] 
X=[1;2;3]; Y=[1;2;3]; 
B = A(sub2ind(size(A),X,Y)) 

B = 

    2 
    9 
    5 
+0

非常感謝你 – user3051460

+3

@ user3051460沒問題!如果這是你想要的,請接受。 :) – chappjc

相關問題