2011-11-18 318 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说服我是一个信徒。

相关问题