我写了一个语法,用不同的值计算函数的值。 例如
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))
)。
没有循环有没有办法做到这一点?
答案 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);