【问题标题】:integration of multidimensional data (matlab)多维数据的整合(matlab)
【发布时间】: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),这是一种计算上合理的方法吗?

【问题讨论】:

标签: performance matlab integration


【解决方案1】:

如果这是您要积分的函数形式,@(x,y,z) sin(x).*cos(y).*exp(z/80).*cos((x-z/20)), x,y,z 可以单独积分,积分可以使用解析求解通过替换sin(x)=(exp(ix)-exp(ix))/2icos(x)=(exp(ix)+exp(ix))/2来实现复数,这将大大降低您计算的时间成本

【讨论】:

  • 啊哈,我的例子太简单了。实际的表达是不可分离的,但很好。
猜你喜欢
  • 1970-01-01
  • 2012-03-01
  • 2015-04-05
  • 2016-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
相关资源
最近更新 更多