543|5

295

帖子

5

TA的资源

一粒金砂(高级)

FFT快速傅里叶变换在MM32F013单片上应用 [复制链接]

大家好,我现在在MM32F013用FFT快速傅里叶变换把ADC读取的混频数据进行分频处理,下面是之前别的同事写的FFT代码,因为时间久远,    且没有交接清楚,而且注释是乱码,不知道有没有网友能看懂这个部分代码呢?

#ifdef FAST_FFT

            for (i = 0; i < 5; i++) //first, clear all
            {
                dft_temp1[i] = 0;
                dft_temp2[i] = 0;
            }

            for (i = t_start; i < t_end; i++)
            {
                p = data + (i * TN); //μ??·??ò?
                dft_temp1[0] += (*(p + 1) + *(p + 9) - *(p + 11) - *(p + 19));
                dft_temp1[1] += (*(p + 2) + *(p + 8) - *(p + 12) - *(p + 18));
                dft_temp1[2] += (*(p + 3) + *(p + 7) - *(p + 13) - *(p + 17));
                dft_temp1[3] += (*(p + 4) + *(p + 6) - *(p + 14) - *(p + 16));
                dft_temp1[4] += (*(p + 5) - *(p + 15)); //sin

                dft_temp2[0] += (*(p + 4) + *(p + 16) - *(p + 6) - *(p + 14));
                dft_temp2[1] += (*(p + 3) + *(p + 17) - *(p + 7) - *(p + 13));
                dft_temp2[2] += (*(p + 2) + *(p + 18) - *(p + 8) - *(p + 12));
                dft_temp2[3] += (*(p + 1) + *(p + 19) - *(p + 9) - *(p + 11));
                dft_temp2[4] += (*(p + 0) - *(p + 10)); //cos
                                                        //dft_temp2[5] += *(p+15);
            }
            //sumim = 3164*dft_temp1[0]+6019*dft_temp1[1]+8284*dft_temp1[2]+9739*dft_temp1[3]+10240*dft_temp1[4];
            //sumre = 3164*dft_temp2[0]+6019*dft_temp2[1]+8284*dft_temp2[2]+9739*dft_temp2[3]+10240*dft_temp2[4];//-dft_temp2[5];

            sumim = 316 * dft_temp1[0] + 602 * dft_temp1[1] + 828 * dft_temp1[2] + 974 * dft_temp1[3] + 1024 * dft_temp1[4];
            sumre = 316 * dft_temp2[0] + 602 * dft_temp2[1] + 828 * dft_temp2[2] + 974 * dft_temp2[3] + 1024 * dft_temp2[4]; //-dft_temp2[5];

#else
            p = data; //+ (s16)(t_start*TN);    //×¢òaμ??·??ò?
            for (i = t_start * TN; i < t_end * TN; i++)
            {
                sumre += *(p + i) * costab[i % TN];
                sumim += *(p + i) * sintab[i % TN];
            }
#endif

我现在的问题是要弄清楚这部分代码的傅里叶级数,然后通过修改适当的级数来得到我想要的数据处理效果,希望有熟悉FFT快速傅里叶变换的大佬能帮忙分析解惑一下,当然也可以付费咨询,谢谢!

此帖出自单片机论坛

最新回复

直接实用DMK里的例程,不同的函数对应不同的深度, 自己选一个,很简单。 注意运算周期和采样的对应关系,有很多"计算机爱好者"不太理解这个,导致运算结果离奇!   详情 回复 发表于 2023-3-27 10:05

回复

3977

帖子

0

TA的资源

版主

这段等于是没头没尾,连数据类型都不知道,是函数里的一部分,没什么用

你还是看看官网上有没有可以用的库吧,实在不行就改造stm32的DSP

此帖出自单片机论坛

回复

2449

帖子

1

TA的资源

版主

单片机搞傅里叶变换是不是有点带不动啊      

此帖出自单片机论坛

点评

一样的,现在ti都不好意思叫dsp了  详情 回复 发表于 2023-3-23 10:58

回复

3977

帖子

0

TA的资源

版主

秦天qintian0303 发表于 2023-3-22 16:44 单片机搞傅里叶变换是不是有点带不动啊      

一样的,现在ti都不好意思叫dsp了

此帖出自单片机论坛

回复

6073

帖子

18

TA的资源

五彩晶圆(中级)

看不懂,帮不了你。

此帖出自单片机论坛
个人签名

默认摸鱼,再摸鱼。2022、9、28


回复

719

帖子

0

TA的资源

纯净的硅(高级)

直接实用DMK里的例程,不同的函数对应不同的深度,

自己选一个,很简单。

注意运算周期和采样的对应关系,有很多"计算机爱好者"不太理解这个,导致运算结果离奇!

此帖出自单片机论坛
个人签名چوآن شـين

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

相关帖子
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表