犰狳 ifftshift 和 ifft c++

Armadillo ifftshift and ifft c++

有谁知道如何在犰狳中对矩阵执行 ifftshift + ifft(按行)?

我是用 matlab 做的:ifft(ifftshift(mat,2),[],2); 其中 mat 是矩阵 (3,18000);

我已经尝试过在 C++ 中做类似的事情:

arma::mat v3(3,18000); ... filled with the same values from Matlab ... 

static arma::cx_mat ifftshift(arma::cx_mat Axx)
{
    return arma::shift(arma::shift(Axx, -ceil(Axx.n_rows/2), 0), -ceil(Axx.n_cols/2), 1);
}

arma::ifft( ifftshift(v3).t() ).t();

结果和Matlab不一样

问题很可能是您的 ifftshift() 在两个维度上移动,matlab 命令仅在第二(行)维度上移动 ifftshift(mat,2)。如果您想要相同的行为,请尝试删除函数中的一个班次
return arma::shift(Axx,-ceil(Axx.n_cols/2),1).