在matlab中使用带有向量的积分2

时间:2013-03-14 22:32:00

标签: matlab

我正在尝试数字评估双积分。具体的积分太复杂了,但这里没有关系,我只想要主要的想法。

假设我有:

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循环)。

1 个答案:

答案 0 :(得分: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);