如果我执行以下代码:
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
]我该怎么做?
P.S. numpy.fft.rfft()在python中的工作方式类似。
发布于 2022-09-26 10:25:55
如果有人需要的话我就找到答案了。
解决方案在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));https://stackoverflow.com/questions/73832229
复制相似问题