FFTW3 DFT 2D всегда возвращает NaN

Я пытаюсь сделать DFT для реальной 2D-матрицы, используя FFTW3.
это мой фрагмент кода:

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* каждое значение в порядке е-270.

моя проблема в том, что вне содержит всегда -nan ценности.

Есть ли хитрость, чтобы получить правильные значения?

Спасибо


0

Решение

Спасибо всем.

Проблема, в которой я работал, не была связана с библиотекой FFTW3, и мой код был верным, несмотря на его слабость.

Моя проблема возникла из-за того, что я кормлю fftw_plan_dft_r2c_2d функция, которая выдается из cv::Mat образ. Итак, я публикую ошибку, которую я сделал, чтобы помочь кому-либо получить эту проблему 🙂

Я конвертирую 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 как длинный вместо double:

row.push_back(inMat.at<long>(i, j));

Удачи всем, кто пытается решить эту проблему.

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector