首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >С++ OpenCV - cv::dft -不计算负频率项

С++ OpenCV - cv::dft -不计算负频率项
EN

Stack Overflow用户
提问于 2022-09-23 19:34:00
回答 1查看 43关注 0票数 0

如果我执行以下代码:

代码语言:javascript
复制
    std::vector<std::complex<double>> inArr { 0, 0, 0, 1, 0 };
    std::vector<std::complex<double>> outArr;
    cv::dft(inArr, outArr);

然后outArr数组将包含:

代码语言:javascript
复制
[ 
  1.+0.j,
 -0.80901699+0.58778525i,
  0.30901699-0.95105652i,
  0.30901699+0.95105652i,
 -0.80901699-0.58778525i
]

虽然我需要一个不计算负频率项的结果,即:

代码语言:javascript
复制
[ 
 1.+0.j,
-0.80901699+0.58778525i,
 0.30901699-0.95105652i
]

我该怎么做?

P.S. numpy.fft.rfft()在python中的工作方式类似。

EN

回答 1

Stack Overflow用户

发布于 2022-09-26 10:25:55

如果有人需要的话我就找到答案了。

解决方案在FFTW库中。

但它是在"GNU通用公共许可证“下分发的。

代码语言:javascript
复制
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));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73832229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档