首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KissFFT (kiss_fftr to kiss_fftri) -如何重建原始信号?

KissFFT (kiss_fftr to kiss_fftri) -如何重建原始信号?
EN

Stack Overflow用户
提问于 2012-06-07 14:58:34
回答 3查看 5.5K关注 0票数 3

我很难理解如何正确使用KissFFT (1.2.9)。我现在要做的就是做一个快速傅立叶变换,然后立即执行一个iFFT来重建原始信号。下面的代码片段演示了我正在做的事情:

代码语言:javascript
复制
void test(short* timeDomainData, int length)
{
    // Create the configurations for FFT and iFFT...
    kiss_fftr_cfg fftConfiguration = kiss_fftr_alloc( length, 0, NULL, NULL );
    kiss_fftr_cfg ifftConfiguration = kiss_fftr_alloc( length, 1, NULL, NULL );

    // Allocate space for the FFT results (frequency bins)...
    kiss_fft_cpx* fftBins = new kiss_fft_cpx[ length / 2 + 1 ];

    // FFT...
    kiss_fftr( fftConfiguration, timeDomainData, fftBins );

    // iFFT...
    kiss_fftri( ifftConfiguration, fftBins, timeDomainData );
}

我发现它在运行时会崩溃。我发现,通过在创建KissFFT配置时将大小除以2,可以阻止崩溃:

代码语言:javascript
复制
kiss_fftr_cfg fftConfiguration = kiss_fftr_alloc( length / 2, 0, NULL, NULL );
kiss_fftr_cfg ifftConfiguration = kiss_fftr_alloc( length / 2, 1, NULL, NULL );

然而,当我播放重建的音频数据时,它大多是与奇怪的裂纹保持沉默。

谁能给我指明正确的方向?

非常感谢,P

编辑1: --这是我如何包含KissFFT头文件并定义FIXED_POINT变量的方式:

代码语言:javascript
复制
#define FIXED_POINT 16
#include "kiss_fftr.h"

这将确保typedef'd 'kiss_fft_scalar‘类型强制为int16_t (简称)。

编辑2:目标平台是Android,因此我还在文件中添加了以下内容:

代码语言:javascript
复制
LOCAL_CPPFLAGS += -DFIXED_POINT
EN

回答 3

Stack Overflow用户

发布于 2012-06-08 12:36:11

我注意到你在送短裤。您确定您已经编译了所有的东西来使用int16_t作为数据类型吗?有时,预处理器环境的不匹配可能会导致问题。

此外,不动点版本向下两个方向(fwd,inv)。所以,如果你想要重建你的信号,你会想要乘以所有的东西。我建议分两个阶段与饱和相乘。

例如,如果你做的是1024大小的FFT+IFFT,那么在FFT之后乘以32,在IFFT之后再乘以32。

票数 0
EN

Stack Overflow用户

发布于 2012-06-08 12:48:30

我不确定沉默,但如果你得到了很多裂纹,那么它可能是因为你是独立处理相邻的块,而不是使用重叠-添加,在每个块之间你有效地交叉淡出,以获得一个更平滑的特性。

票数 0
EN

Stack Overflow用户

发布于 2012-06-09 01:11:15

我很难在Android中做同样的事情,还没有得到它(参见这里!),但是我可以在您的代码中看到一个问题:"fftBins“需要”长度“大小。原因是它是原始变换,而不是频率大小/相位.我认为?还是我弄错了?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10934378

复制
相关文章

相似问题

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