根据单个标准找到多个(arrayfun)

时间:2013-11-28 01:02:00

标签: windows matlab

当我使用基于另一个变量(a)的标准时,我试图从变量(b)中接收所有值(它类似于excel中的= IF函数)。像这样:

示例:

(a):1 2 2 2 3 3 3 3

(b):3 6 3 5 6 4 5 4

我的标准是

(a) = 2

我的回复必须是:

(b) = 6 3 5 

我尝试使用arrayfun找到解决方案,如下所示:

arrayfun(@(x) b(find(a == x, 1, 'first')), 2)
显然,它只回答6,第一个匹配标准的数字。我可以以某种方式正确地表达arrayfun吗?或者我还需要一个完整的其他功能吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

你不只是想要:

a = [ 1 2 2 2 3 3 3 3]
b = [3 6 3 5 6 4 5 4]
b(a == 2)


ans =

 6     3     5

如果a是矩阵,那么:

a = [ 1 2 2 2 3 3 3 3; ...
      1 1 1 2 2 3 4 4; ]
b = [3 6 3 5 6 4 5 4]

b(a(1,:)==2)

ans =

   6     3     5