硬汉嵌入式论坛

 找回密码
 立即注册
查看: 235|回复: 4
收起左侧

[STM32H7] H743上进行的RFFT与CFFT计算结果不同

[复制链接]

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2025-12-30 11:45:49 | 显示全部楼层 |阅读模式
本帖最后由 jinyi7016 于 2025-12-30 11:47 编辑


DSP库使用的是STM32Cube_FW_H7_V1.12.1\Drivers\CMSIS\DSP\Source中的源码,添加到工程中进行编译的。
软件是cubeide1.17


信号 生成,相同的信号

[C] 纯文本查看 复制代码
for (i = 0; i < 1024; i++) {
                adc_buf[i] = 5
                                * arm_sin_f32(2 * PI * FREQ_50HZ / SAMPLE_RATE * (float) i)
                                + 10;
                fft_buf[i] = adc_buf[i];//rfft

                testInput_f32[2 * i] = adc_buf[i];//cffg
                testInput_f32[2 * i + 1] = 0;
        }


对同一信号 ,分别进行:rfft与cfft
[C] 纯文本查看 复制代码
arm_rfft_fast_f32(&fft_instance, fft_buf, fft_out, 0);
        // 计算幅值
        for (i = 0; i < NPT / 2; i++) {
                fft_out[i] = sqrt(
                                fft_out[i] * fft_out[i]
                                                + fft_buf[i + NPT / 2] * fft_buf[i + NPT / 2]);
        }
        //cFFT
        arm_cfft_f32(&arm_cfft_sR_f32_len1024, testInput_f32, 0, 1);
        arm_cmplx_mag_f32(testInput_f32, testOutput, fftSize);


结果rfft是正确的
屏幕截图 2025-12-30 114450.jpg

但cfft的就差很多,是我使用错了吗?
屏幕截图 2025-12-30 114535.jpg

回复

使用道具 举报

6

主题

162

回帖

180

积分

初级会员

积分
180
发表于 2025-12-31 00:06:59 | 显示全部楼层
这是何意?
屏幕截图 2023-07-25 221432.png
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2025-12-31 09:05:40 | 显示全部楼层

这里其实都是RFFT的。这个数组名可能写错了。后来把这一部分注释掉了。对最后结果没影响。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
发表于 2025-12-31 10:58:56 | 显示全部楼层
注意这个问题

1234.png
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2025-12-31 16:52:16 | 显示全部楼层

注意到了的。RFFT这个函数是计算正常的。不正常的是CFFT的这个函数,计算的结果看着差得很远啊。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-1-10 07:59 , Processed in 0.047286 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表