This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Hercules DSPLIB:时域中有值数据的 FFT

Guru**** 1079480 points
Other Parts Discussed in Thread: AM6546
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/876122/hercules-dsplib-fft-of-real-valued-data-in-time-domain

器件型号:Hercules DSPLIB
主题中讨论的其他器件:AM6546

我们使用 Hercules DSPLIB v1.0.0 在我们的应用中执行一些信号处理。 为了简单地使用库进行触控、我们只需对直流信号执行128点 FFT 即可获得脉冲响应。  

以下代码 摘录:

float32_t test[128]={1.0};

arm_rfft_instance_f32 rfft_instance;
arm_rfft_instance_f32* rfft_instance_ptr =(arm_rfft_instance_f32*)&rfft_instance;

ARM_CFFT_radx4_instance_F32 CFFT_instance;
ARM_CFFT_radx4_instance_f32* CFFT_instance_ptr =(ARM_CFFT_radx4_instance_f32*)&CFFT_instance;

arm_rfft_init_F32 (rfft_instance_ptr、CFFT_instance_ptr、128、0、1);

float32_t out[256]={0.0};
arm_rfft_F32 (rfft_instance_ptr、test、out);

但是,当我打印“输出”的结果时,我得到了一个1、0、1、0……的流 而不是幅度为128的脉冲。
实数[0]=1、实数[1]=1、实数[2]=1……

Complex [0]= 0,Complex [1]=0,Complex [2]=0……

我是否不正确地使用此功能?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Dhruva、

    BTW、您使用的是哪个器件?

    arm_rfft_F32输出的格式(...) 是 :{REAL [0]、IMag[0]、REAL [1]、IMag[1]、REAL [2]、 伊玛格[2] 实数[(N/2)-1]、imag[(N/2)-1}

    N/2是实数部分、N/2是交错的虚数部分、共为 N/2复数对。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Dhruva、

    可以在 AM65x 器件上使用代码。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Wang、

    是的。 就是我有一个交替的1和0流作为输出。 直流信号的 FFT 应该已经为我提供了一个纯实脉冲响应。
    我只期望 REAL [0]具有一个值、其他所有值都为零。

    预期输出为[128、0、0、0、0..]

    但我得到的是[1,0,1,0,1,0............]

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在 AM6546上使用它。 我们为 R5F 编译了 HerculesLIB、并开始了一些工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Dhruva Krishnadas "] float32_t test[128]={1.0};[/引用]

    我认为这只会将第一个元素初始化为1.0。  所有其他的将是0.0。  您是否已仔细检查调试器?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Brad。 这就是诀窍。