2011-11-18 54 views

回答

5
v = a(sub2ind(size(a), b, 1:length(b))) 

sub2ind將下標轉換爲單個索引。

0

要嘗試的另一件事,保持非常接近您的描述,您可以使用arrayfun函數。

首先定義一個函數,將值x映射到期望的輸出。

fn = @(x) a(b(x), x); 

然後調用在所述的i向量中的每個輸入端,功能。

i = 1:3; 
v = arrayfun(fn, i); 

或者,這可以在一個單一的線來完成,以明顯的方式:

v = arrayfun(@(x) a(b(x), x), 1:3); 

arrayfun簡直是簡寫以下循環:

for ixLoop = 1:3 
    v(ixLoop) = a(b(ixLoop),ixLoop); 
end 

的相關功能arrayfun,cellfunstructfun具有類似的用途,並且奇怪地賦予權力。 This Joel article說服我是一個信徒。

相關問題