FFTW3 DFT 2D总是返回NaN
FFTW3 DFT 2D always return NaN
我正在尝试使用FFTW3为真正的2D矩阵做DFT。这是我的代码片段:
size_t nyh = ny/2 + 1;
out = (fftw_complex*)fftw_malloc ( sizeof ( fftw_complex ) * nx * nyh );
plan_forward = fftw_plan_dft_r2c_2d ( nx, ny, in, out, FFTW_ESTIMATE );
fftw_execute ( plan_forward );
,其中in
为double*
,每个值的数量级为e-270。
我的问题是out总是包含-nan
值。
有什么技巧可以得到正确的值吗?
谢谢
谢谢大家。
我正在运行的问题不是由于FFTW3库和我的代码是正确的,尽管它的弱点。
我的问题来自于我提供给cv::Mat
图像发出的fftw_plan_dft_r2c_2d
函数的输入。所以,我张贴的错误,我做了帮助任何人得到这个麻烦:)
我使用以下函数将cv::Mat
转换为vector<vector<double> >
:
static MatrixOfDouble _convertMat( cv::Mat& inMat)
{
MatrixOfDouble result;
for (int i = 0; i < inMat.rows; ++i)
{
std::vector<double> row;
for (int j = 0; j < inMat.cols; ++j)
{
row.push_back(inMat.at<double>(i, j));
}
result.push_back(row);
}
return result;
}
然后线性化返回的矩阵来馈送dft函数。
但部分结果矩阵元素为NaN。
作为一个修复,我得到cv::Mat元素长而不是双:
row.push_back(inMat.at<long>(i, j));
相关文章:
- 为什么这段代码返回 -nan(ind)?C++
- 为什么 std::isnan() 对于具有 NAN 值的双变量返回 false
- 有意返回 NaN
- 牛顿方法返回 NaN
- Double Exp(double)出乎意料地返回NAN(无浮子溢出)
- NAN通过指针访问时是否返回false
- AVX内在_mm256_cmp_ps是否应在为true时返回NaN
- OpenCV 3.1 ANN 预测返回 nan
- nan在C++中是什么意思?为什么pow(-4,-2.1)返回-nan
- 当 M 很大时返回 nan(ind)
- 特征库的矩阵逆函数返回NaN
- c++中返回NaN的函数
- 函数一直返回NaN
- 神经网络在OpenCV 3.0中只返回nan
- 为什么我的函数开始返回nan
- 返回NaN或抛出异常
- NaN或false作为双精度返回值
- 如果任一参数为 NaN,什么会导致 C/C++ <、<= 和 == 运算符返回 true?
- FFTW3 DFT 2D总是返回NaN
- 正态估计返回NAN的曲率场