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.

[参考译文] EVE 中 FFT 算法的 Q 格式是什么

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/565932/what-is-the-q-format-of-the-fft-algorithm-in-eve

您好!  

我正在使用 FFT 算法。 以实现雷达信号处理的2D-FFT。

使用了单独的 int (16位)格式、但我无法从给定的文档中找到 Q 格式。
我需要一些帮助。

非常感谢。

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

    专家已收到通知,并将在此处直接发表评论。

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

    您好奔驰、

      输入数据为16位有符号整数。 您    可以分别使用 FFT_TI_InArgs->windowingScaleFactor 和 FFT_TI_InArgs->scaleFactors 来控制窗口系数和 Twiddle 因子的 Q 格式。[] 这些参数分别在窗口化之后和 FFT 的每个阶段应用舍入操作((x +(1<<(n-1)>> n))。 就像一个示例、如果您的 Twiddle 因子采用 Q15格式、那么您可以提供 FFT_TI_InArgs->scaleFactor[]= 15以获得正确的结果。 需要注意的是、我们应该确保 FFT 的每个级的输出在15位以内。 这是必需的、因此、由于 FFT 每个阶段的位增长、"除数因子"的乘法不会溢出。 您必须选择这些换算系数来处理 Q 格式和缩放、从而将每个级的输出限制在15位以内。  

    此致、

    安州

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好奔驰、
    只是稍微修正一下。 在我们的实现中、Twiddle 因子采用 Q15格式、输入数据存储在16位有符号整数中。 除此之外,用户还可以使用 FFT_TI_InArgs->scaleFactors []参数在 FFT 的每个阶段提供自己的缩放。 希望这将澄清您的疑问。 如果您有任何疑问、请告诉我。

    此致、
    安州
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、安州、
    我已经了解了大部分内容。 当我在 Processor_SDK_Radar_02_11_00_00中测试 FFT 算法时、我发现 FFT_TI_InArgs->scaleFactors []默认全部设置为2。 根据您的描述、此格式应为 Q2。 与 Q15相比、这些因素应该非常大。 但是、当我输入(-7000~7000)正弦波时、输出峰值 ABS_VALUE 不是很大(仅4096)、这就是为什么?
    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好奔驰、

      正如我在实施中的第二个答案中提到的、Twiddle 因子始终以 Q15格式存储。 因此,即使您将 FFT_TI_InArgs->scaleFactors 指定为0,输出仍将向下移动15 (因为 Twiddle 因子的 Q15格式)。 在我们的实现中,将标量因子的默认值选为2 ,该值在内部转换为17 (15+2)的下移。 对于基于基数4的 FFT 实现、每个阶段输出可增加2位、因此如果我们在每个阶段下调2位、我们将确保下一个阶段不会溢出。

    此致、

    安州