我正在为我的项目使用 fftw 的xtensor 集成,我想在 3D 数组的最后一个轴上做一个 fft。
如果我这样做:
xt::xtensor<double, 3> single_wavelet = xt::load_npy<double>("wavelet.npy"); // shape = (1, 1, 100)
std::cout << "input : " << wavelet<< std::endl;
xt::xtensor<std::complex<double>, 3> fft = xt::fftw::rfft(single_wavelet); // shape = (1, 1, 51)
std::cout << "fft : " << fft << std::endl;
它输出这个:
input : {{{ -60.896 , -60.896 , 0. , -60.896 , -60.896 ,
-60.896 , -60.896 , -60.896 , 60.896 , 0. ,
-121.792 , -60.896 , 121.792 , 121.792 , -60.896 ,
-60.896 , 365.376007, 730.752014, -487.167999, -3501.52002 ,
-3257.936035, 5206.60791 , 10443.664062, -1613.744019, -10930.832031,
-4963.023926, 9469.328125, 5937.359863, -5450.191895, -4475.855957,
3014.352051, 1004.783997, -2588.080078, 365.376007, 3014.352051,
-365.376007, -2709.87207 , -365.376007, 1857.328003, 365.376007,
-1248.368042, -548.064026, 669.856018, 243.584 , -365.376007,
60.896 , 60.896 , -608.960022, -121.792 , 1004.783997,
243.584 , -1126.57605 , -426.272003, 1126.57605 , 852.544006,
-730.752014, -1248.368042, 60.896 , 852.544006, 365.376007,
-426.272003, -426.272003, 121.792 , 487.167999, 182.688004,
-548.064026, -669.856018, 304.480011, 1004.783997, 304.480011,
-730.752014, -548.064026, 426.272003, 365.376007, -304.480011,
-243.584 , 121.792 , 182.688004, 243.584 , 243.584 ,
-365.376007, -487.167999, 304.480011, 669.856018, -304.480011,
-852.544006, 0. , 669.856018, 182.688004, -304.480011,
-121.792 , 121.792 , 60.896 , 182.688004, -60.896 ,
-487.167999, -304.480011, 426.272003, 304.480011, -426.272003}}}
fft : {{{-60.896+0.i, 0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i,
0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i,
0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i,
0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i,
0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i,
0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i,
0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i,
0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i,
0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i,
0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i, 0. +0.i,
0. +0.i}}}
这不是我所期望的。但是,如果我在 1D xtensor 上执行 fft,它可以正常工作。我找不到合适的文档,所以如果有人知道怎么做,请告诉我。谢谢 :)