#c #fftw #xtensor
Вопрос:
Я использую интеграцию xtensor fftw для своего проекта, и я хотел бы выполнить БПФ по последней оси 3D-массива.
Если я сделаю это вот так:
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.
Я не смог найти соответствующую документацию для этого, поэтому, если кто-нибудь знает, как это сделать, дайте мне знать.
Спасибо 🙂