|
ARM说明:
- Earlier releases of the library provided separate radix-2 and radix-4
- algorithms that operated on floating-point data. These functions are still
- provided but are deprecated. The older functions are slower and less general
- than the new functions.
- DSP库的早期发行版提供了单独的radix-2和radix-4对浮点数据进行运算的算法。 这些功能仍然提供,但已弃用。 相比新版函数,老版的功能较慢且通用性较低
复制代码
arm_cfft_f32采用的是混合基,基8配合基2,基8配合基4或者基8
- void arm_cfft_f32(
- const arm_cfft_instance_f32 * S,
- float32_t * p1,
- uint8_t ifftFlag,
- uint8_t bitReverseFlag)
- {
- uint32_t L = S->fftLen, l;
- float32_t invL, * pSrc;
- if (ifftFlag == 1U)
- {
- /* Conjugate input data */
- pSrc = p1 + 1;
- for (l = 0; l < L; l++)
- {
- *pSrc = -*pSrc;
- pSrc += 2;
- }
- }
- switch (L)
- {
- case 16:
- case 128:
- case 1024:
- arm_cfft_radix8by2_f32 ( (arm_cfft_instance_f32 *) S, p1);
- break;
- case 32:
- case 256:
- case 2048:
- arm_cfft_radix8by4_f32 ( (arm_cfft_instance_f32 *) S, p1);
- break;
- case 64:
- case 512:
- case 4096:
- arm_radix8_butterfly_f32 ( p1, L, (float32_t *) S->pTwiddle, 1);
- break;
- }
- if ( bitReverseFlag )
- arm_bitreversal_32 ((uint32_t*) p1, S->bitRevLength, S->pBitRevTable);
- if (ifftFlag == 1U)
- {
- invL = 1.0f / (float32_t)L;
- /* Conjugate and scale output data */
- pSrc = p1;
- for (l= 0; l < L; l++)
- {
- *pSrc++ *= invL ;
- *pSrc = -(*pSrc) * invL;
- pSrc++;
- }
- }
- }
复制代码
|
|