- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 C++ 项目中使用 kissFFT std::vector
轻松处理任意长度的信号。为此,我编辑了 this SO answer来自 kissFFT 的作者。我换了
std::complex<float> x[nfft];
与
vector<std::complex<float>> x(nfft, 0.0);
并替换了函数调用
kiss_fft(fwd,(kiss_fft_cpx*)x,(kiss_fft_cpx*)fx)
与
kiss_fft(fwd,(kiss_fft_cpx*)&x[0],(kiss_fft_cpx*)&fx[0]);
这似乎工作得很好,但这是正确的方法吗?在 kissFFT 的“test”文件夹中,我发现了“testcpp.cc”,它似乎使用了一些花哨的 C++ 模板功能(不幸的是,对我来说太花哨了;我无法编译它)。我的解决方案有什么缺点吗?
#include "kiss_fft.h"
#include <complex>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
const int nfft=256;
kiss_fft_cfg fwd = kiss_fft_alloc(nfft,0,NULL,NULL);
kiss_fft_cfg inv = kiss_fft_alloc(nfft,1,NULL,NULL);
vector<std::complex<float>> x(nfft, 0.0);
vector<std::complex<float>> fx(nfft, 0.0);
x[0] = 1;
x[1] = std::complex<float>(0,3);
kiss_fft(fwd,(kiss_fft_cpx*)&x[0],(kiss_fft_cpx*)&fx[0]);
for (int k=0;k<nfft;++k) {
fx[k] = fx[k] * conj(fx[k]);
fx[k] *= 1./nfft;
}
kiss_fft(inv,(kiss_fft_cpx*)&fx[0],(kiss_fft_cpx*)&x[0]);
cout << "the circular correlation of [1, 3i, 0 0 ....] with itself = ";
cout
<< x[0] << ","
<< x[1] << ","
<< x[2] << ","
<< x[3] << " ... " << endl;
kiss_fft_free(fwd);
kiss_fft_free(inv);
return 0;
}
最佳答案
我倾向于使用 std::vector<kiss_fft_cpx>
我自己,但除此之外,我的代码与您的代码几乎相同。 (嗯,kiss_fft_alloc
和 kiss_fft_free
进入 ctor/dtor 以避免内存泄漏,但这是一种风格。)
再往下一点,fx[k] * conj(fx[k])
是一个典型的数学表达式。使用fx[k].norm()
效率更高.
关于c++ - 如何正确使用带有 C++ vector 的 kissFFT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32443748/
我正在尝试使用 KissFFT Library与 this 11 second 44kHz .wav sample file作为测试输入。 然而,当我处理窗口大小为 512 的文件时,我只得到 1 个
我在编译和链接“开箱即用”的 kissfft 库时遇到了新问题。我已经下载了 kissfft 库并将其解压缩到测试目录。进入目录并运行“make testall”后,我收到以下错误,看起来 std c
我在编译和链接“开箱即用”的 kissfft 库时遇到了新问题。我已经下载了 kissfft 库并将其解压缩到测试目录。进入目录并运行“make testall”后,我收到以下错误,看起来 std c
我想在真实的音频设备上应用 FFT 并从中计算峰值 这是我的代码.. N=8192 kiss_fft_cpx out[N/2 +1]; int len = fft->N / 2
我们已经编译了 KissFFT 库,它似乎运行良好,但我们不确定如何使用它来获取二维图像的频域。任何帮助都会很棒。 附言。我们在 After Effects SDK 中运行它。 最佳答案 我还没有将
尝试让 KissFFT 定点实现与 DSPIC 保持一致。问题是 Kiss 中的定点实现是真正的定点,但 dspic 在 40 位寄存器中进行乘法和求和,然后在舍入后向下移动到 16 位。 KissF
目前我正在开发 Tizen IDE。 我已经从麦克风读取输入数据并尝试对其应用 FFT...但每次我从 FFT 得到 nan 输出。 这是我的代码.. ShortBuffer *pBuffer1 =
我正在尝试在 Java 应用程序中原生使用 KissFFT,但输入信号的正向/反向没有按预期返回:信号幅度几乎不存在。如果我去掉比例因子(除以 2N),结果就是谐波噪声。谁能发现这个错误? 这是前向调
我正在通过包含 320 个样本的数据包中的套接字连接接收 PCM 数据。声音采样率为每秒 8000 个样本。我正在用它做这样的事情: int size = 160 * 2;//160; int isi
我在理解如何正确使用 KissFFT (1.2.9) 时遇到一些问题。我现在想要实现的是执行 FFT,然后立即执行 iFFT 以再次重建原始信号。下面的代码片段演示了我在做什么: void test(
我想在 C++ 项目中使用 kissFFT std::vector轻松处理任意长度的信号。为此,我编辑了 this SO answer来自 kissFFT 的作者。我换了 std::complex x
真正的逆 FFT 给我一个充满 NaN 而不是 floats 的数组。 kiss_fftri(conf,complex_array,output); complex_array 是正常的,我猜值没有问
我正在正确获取图像的 2d-fft,但没有从同一图像的 2d-fft 中得到 的倒数。 从同一图像的 2d-fft 获取逆的正确调用是什么??? // for 2d-fft. This I am ge
我正在尝试在 BeagleBone Black 上使用 KissFFT,运行 Debian 7.5 和 3.8 内核。当我尝试运行该程序时,该程序已编译,但显示错误 Real FFT optimiza
我有一个项目使用 FFTW 的 fftw_plan_dft_r2c_1d 和 fftw_plan_dft_c2r_1d,以及 fftw_execute。 KissFFT 中有哪些等效函数? 最佳答案
我正在使用 KissFFT 的真实函数来转换一些真实的音频信号。我很困惑,因为我输入了带有 nfft 样本的真实信号,但结果是 nfft/2+1 复杂 频率仓。 来自 KissFFT 的自述文件: 真
我是一名优秀的程序员,十分优秀!