私は三次元、X、Y、Zに(多少複雑な式)を有します。私はそれらのうちの1つの累積積分に興味があります。これまでの私の最善の解決策は、3Dグリッドを作成し、あらゆる点で表現を評価し、次にcumtrapzで3次元に統合することです。これは私が達成しようとしているものの単なるスケールダウン例です:ベクトルの大きさ(X、Y〜100、Z〜5000)を考えると、これはこれを行うには、計算賢明な方法である統合
%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
?
の時間コストを削減します
cos(x)=(exp(ix)+exp(ix))/2
は、/あなたはコードレビューにこれを投稿したい場合がありますスピードアップ(http://codereview.stackexchange.com/) – Alessiox