我正在尝试数字评估双积分。具体的积分太复杂了,但这里没有关系,我只想要主要的想法。
假设我有:
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循环)。
答案 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);