簡體   English   中英

С++ OpenCV - cv::dft - 不計算負頻率項

[英]С++ OpenCV - cv::dft - Without computing negative frequency terms

如果我執行以下代碼:

    std::vector<std::complex<double>> inArr { 0, 0, 0, 1, 0 };
    std::vector<std::complex<double>> outArr;
    cv::dft(inArr, outArr);

然后 outArr 數組將包含:

[ 
  1.+0.j,
 -0.80901699+0.58778525i,
  0.30901699-0.95105652i,
  0.30901699+0.95105652i,
 -0.80901699-0.58778525i
]

雖然我需要一個不計算負頻率項的結果,即:

[ 
 1.+0.j,
-0.80901699+0.58778525i,
 0.30901699-0.95105652i
]

我怎樣才能做到這一點?

PS numpy.fft.rfft() 在 python 中的工作方式類似。

如果有人需要,我找到了答案。
解決方案在 FFTW 庫中。
但它是根據“GNU 通用公共許可證”分發的。

std::vector<double> inArr{ 0, 0, 0, 1, 0 };
std::vector<std::complex<double> > outArr(inArr.size());
fftw_execute(fftw_plan_dft_r2c_1d(inArr.size(), inArr.data(), (fftw_complex *)outArr.data(), FFTW_ESTIMATE));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM