【发布时间】:2016-07-25 23:46:19
【问题描述】:
我在 x,y,z 三个维度上有一个(有点复杂的表达式)。我对其中一个的累积积分感兴趣。到目前为止,我最好的解决方案是创建一个 3D 网格,评估每个点的表达式,然后使用 cumtrapz 在三维上积分。这只是我要实现的目标的缩小示例:
%integration
xvec = linspace(-pi,pi,40);
yvec = linspace(-pi,pi,40);
zvec = 1:160;
[x,y,z] = meshgrid(xvec,yvec,zvec);
f = @(x,y,z) sin(x).*cos(y).*exp(z/80).*cos((x-z/20));
output = cumtrapz(f(x,y,z),3);
%(plotting)
for j = 1:length(output(1,1,:));
surf(output(:,:,j));
zlim([-120,120]);
shading interp
pause(.05);
drawnow;
end
考虑到向量的大小 (x,y~100, z~5000),这是一种计算上合理的方法吗?
【问题讨论】:
-
如果您的代码有效并且您正在寻求改进/加速,您可能希望将其发布到 CodeReview (codereview.stackexchange.com)
标签: performance matlab integration