我在Matlab上执行以下integral2
操作时遇到问题。
phi = @(x)(x>0).*exp(-1./x.^2);
R = @(xx,zz)phi(xx).*phi(1-xx).*phi(zz).*phi(1-zz);
omega = linspace(0,5,1000000);
theta = linspace(0,2*pi,1000000);
D = exp((10*1i*omega)./(40*pi)).*integral2(@(xx,zz)R(xx,zz).*exp(20.*omega.*1i.*((sin(theta)).*xx+(cos(theta)).*zz)),0,5,0,5);
我得到的错误信息是"矩阵维度必须同意"。
Matrix dimensions must agree.
Error in @(xx,zz)R(xx,zz).*exp(20.*omega.*1i.*((sin(theta)).*xx+(cos(theta)).*zz))
Error in integral2Calc>integral2t/tensor (line 228)
Z = FUN(X,Y); NFE = NFE + 1;
Error in integral2Calc>integral2t (line 55)
[Qsub,esub] = tensor(thetaL,thetaR,phiB,phiT);
Error in integral2Calc (line 9)
[q,errbnd] = integral2t(fun,xmin,xmax,ymin,ymax,optionstruct);
Error in integral2 (line 106)
Q = integral2Calc(fun,xmin,xmax,yminfun,ymaxfun,opstruct);
我不确定如何克服这个问题。当我在numel
,xx
,theta
和omega
上zz
时,我发现它们都有1000000个元素。
我知道这可能是一个"新手"问题,但我尝试了许多事情来达到这一点,但没有用。
我想解决的等式是:
答案 0 :(得分:3)
函数integral2
一次只能计算一个积分。如果你需要
要计算许多积分,你应该使用循环(我略微减小了网格大小):
phi = @(x)(x>0).*exp(-1./x.^2);
R = @(xx,zz)phi(xx).*phi(1-xx).*phi(zz).*phi(1-zz);
% generate the grid
[omega,theta]= meshgrid(linspace(0,5,200),linspace(0,2*pi,200));
D= zeros(size(omega)); % preallocate the memory
for ii= 1:size(omega,1)
for jj= 1:size(omega,2)
f= @(xx,zz)R(xx,zz).*exp(20.*omega(ii,jj).*1i.*...
((sin(theta(ii,jj))).*xx+(cos(theta(ii,jj))).*zz));
D(ii,jj)= exp((10*1i*omega(ii,jj))./(40*pi)).*integral2(f,0,5,0,5);
end
end
% convert to Cartesian coordinates
[x,y] = pol2cart(theta,omega);
% draw the results
figure;
surface(x,y,abs(D))
shading interp; axis square; view(3)
figure;
surface(x,y,real(D))
shading interp; axis square; view(3)
figure;
surface(x,y,imag(D))
shading interp; axis square; view(3)
被积函数xx
中zz
和R(xx,zz)
的大小不一定等于1x1000000。
MATLAB文档只说
函数fun必须接受两个相同大小的数组并返回一个 相应值的数组。它必须按元素执行 操作
例如,在我的系统上,它的大小是14x14。
答案 1 :(得分:2)
integral2(fun, xmin, xmax, ymin, ymax)
计算给定z = fun(x, y)
和x
限制内函数y
所描述的平面下的音量。
因此,对于(x, y)
的一个值,fun
应该只返回一个z
值,而在您的示例中并非如此。您应该检查函数的含义并确定要计算的积分。
答案 2 :(得分:0)
您无法numel
xx
,因为它是集成功能传递的函数参数。
你实际上不知道它的大小,也不能用恒定大小的矩阵乘以它。