Matlab 将arrayfun应用于几个值

Matlab 将arrayfun应用于几个值,matlab,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 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))

有没有办法不用循环就可以做到这一点?

因此,我将提供一种“愚蠢”的方法,无需修改对函数的调用:

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的所有组合,然后您通过函数成对地输入它,就像您以前做的那样。

因此,我将提供一种“愚蠢”的方法,您无需修改对函数的调用:

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的所有组合,然后您通过函数成对地输入它,就像以前一样。

使用
ndgrid

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

使用
ndgrid

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

i、 你想要x1和x2的所有组合?查看
combvec
,即您想要x1和x2的所有组合?查看
combvec
你可以省去
(:)
得到一个2D结果,这可能更有意义你可以省去
(:)
得到一个2D结果,这可能更有意义谢谢你的帮助!谢谢你的帮助!