0

我正在尝试对双积分进行数值评估。具体积分太复杂了,不过这里不相关,我只想要大意。

假设我有:

x=1;
y=1;

fun = @(theta,phi)  (x.*sin(theta) + y.*cos(phi));
result = integral2(fun,0,pi,0,2*pi)

这给出了一个值。假设我想对 X 和 Y 的一系列值执行此操作。理想情况下,我希望将 x,y 作为向量:

x=1:10;
y=1:10;

Matlab 给出(使用错误。* 矩阵尺寸必须一致。)

解决办法是什么?(理想情况下,我不想使用 for 循环)。

4

1 回答 1

1

arrayfun当您希望它接受数组时,您可以使用它来“提升”您的功能

x = 1:10;
y = 1:10;
result = arrayfun(@(x, y) integral2(@(theta,phi) x.*sin(theta) + y.*cos(phi),0,pi,0,2*pi), x, y);

或者

fun = @(theta, phi, x, y) x.*sin(theta) + y.*cos(phi);
result = arrayfun(@(x, y) integral2(@(theta,phi)fun(theta,phi,x,y), 0,pi,0,2*pi), x, y);
于 2013-03-14T22:40:42.340 回答