私は fortran の初心者で、効率的に matlab コードを .f に変換しようとしています。
私は fftw3 パッケージを使用しており、ストライドが複雑なものから複雑なものまでの fft が必要です。たとえば、3 次元配列の 2 次元を変換する必要があります。
私がmatlabでやっていることは
fft(fft(u,[],2),[],3)
はu(Nx,Ny,Nz)
3D マトリックスです。
ループを介して fortran でこれを行うことができますが、これは以下のように matlabs ffts よりもはるかに遅くなります。
call dfftw_plan_dft_2d(planf,Nx,Nz,inf,outf,FFTW_FORWARD,FFTW_MEASURE)
do l=1,Nx;
call dfftw_execute_dft_(planf,f(l,:,:),fh(l,:,:));
end do
fft_many
ストライドを使用できる私の問題の解決策ですが、どうにかして動作させることができませんでした。誰でも助けてもらえますか?
このリンクは、実際には fftw の高度な複雑な fft の「C」ヘルプです。