将arrayfun应用于几个值

时间:2017-07-03 08:46:34

标签: matlab

我写了一个语法,用不同的值计算函数的值。 例如

x1=[1 2 10 11];
x2=[10 11 12 14];
C= arrayfun (@(t1,t2) myfunction(A,B,t1,t2),x1,x2,'UniformOutput',0);
% A and B are matrixs

在此示例中,该函数将对A(x1,x2)B(x1,x2)执行操作。问题是arrayfun将适用于每对(x1(1),x2(1)), x1(2),x2(2))等。但我希望它能够处理x1和x2的所有值(16对值,以便它也可以应用于例如(x1(1),x2(3)))。

没有循环有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

所以我打算提供"哑巴"这样做的方式,而无需修改对函数的调用:

x1=[1 2 10 11];
x2=[10 11 12 14];
v = combvec(x1,x2);
X1 = v(1,:);
X2 = v(2,:);

C= arrayfun (@(X1,X2) myfunction(A,B,t1,t2),X1,X2,'UniformOutput',0);

这有效地计算了x1和x2的所有组合,然后通过你的函数成对输入它,就像你以前一样。

答案 1 :(得分:1)

使用ndgrid

 [X Y]  = ndgrid(x1,x2);
 C= arrayfun (@(x1,x2) myfunction(A,B,t1,t2),X(:),Y(:),'UniformOutput',0);