OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2953|回复: 9

stm32f407 把运算结果复数求相位

[复制链接]

63

主题

238

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1136
金钱
1136
注册时间
2015-11-29
在线时间
146 小时
发表于 2019-12-10 16:18:32 | 显示全部楼层 |阅读模式
10金钱
1 #include "stm32f4xx_conf.h" 2 //位带操作 3 #include "sys.h" 4 #include "delay.h" 5 #include "usart.h"10 #include "arm_math.h"11 #define FFT_LENGTH        1024         //FFT长度,默认是1024点FFT12 13 float fft_inputbuf[FFT_LENGTH*2];    //FFT输入输出数组,此数组为arm_cfft_radix4_f32的输入输出数组,前一个元素为实部,后一个为虚部,每两个元素代表一个点.14 float fft_outputbuf[FFT_LENGTH];     //arm_cmplx_mag_f32() 幅度输出数组15 arm_cfft_radix4_instance_f32 scfft;16 17 int main(void)18 { 19     delay_init(168);20     lcd_init(0);    //初始化LCD21     key_init();22     uart_init(115200);        //初始化串口波特率为11520023     24     arm_cfft_radix4_init_f32(&scfft,FFT_LENGTH,0,1);//初始化scfft结构体,设定FFT相关参数25     26     while(1)27     {28         u32 keyval = (u32)keys_scan(0);29         if(keyval==1)30         {31             for(int i=0;i<FFT_LENGTH;i++)//生成信号序列32             {33                  fft_inputbuf[2*i]=15 + 10*arm_sin_f32(2*PI*i*100/FFT_LENGTH) + \34                                    5.5*arm_sin_f32(2*PI*i*150/FFT_LENGTH); //生成实部35                 36                  fft_inputbuf[2*i+1]=0;//虚部全部为037             }38             arm_cfft_radix4_f32(&scfft,fft_inputbuf);    //FFT计算(基4)39             arm_cmplx_mag_f32(fft_inputbuf,fft_outputbuf,FFT_LENGTH);    //把运算结果复数求模得幅值 40             41             printf("FFT Result:\r\n");42             for(int i=0;i<FFT_LENGTH;i++)43             {44                 printf("%f\r\n",fft_outputbuf);45             }46         }47         delay_ms(60);48     }49 }这个地方直接算出幅值,那位大神知道怎么算相位?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

63

主题

238

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1136
金钱
1136
注册时间
2015-11-29
在线时间
146 小时
 楼主| 发表于 2019-12-10 16:19:34 | 显示全部楼层

            for(int i=0;i<FFT_LENGTH;i++)//生成信号序列
           {                 fft_inputbuf[2*i]=15 + 10*arm_sin_f32(2*PI*i*100/FFT_LENGTH) + \
                                    5.5*arm_sin_f32(2*PI*i*150/FFT_LENGTH); //生成实部
               
                  fft_inputbuf[2*i+1]=0;//虚部全部为0
             }
             arm_cfft_radix4_f32(&scfft,fft_inputbuf);    //FFT计算(基4)
             arm_cmplx_mag_f32(fft_inputbuf,fft_outputbuf,FFT_LENGTH);    //把运算结果复数求模得幅值
            
             printf("FFT Result:\r\n");
            for(int i=0;i<FFT_LENGTH;i++)
           {
                printf("%f\r\n",fft_outputbuf[i]);
            }
         }
         delay_ms(60);
     }
}
回复

使用道具 举报

5

主题

424

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1020
金钱
1020
注册时间
2014-9-4
在线时间
199 小时
发表于 2019-12-10 16:39:02 | 显示全部楼层
参考这个帖子,很久以前我做过的,现在忘了。
http://www.openedv.com/forum.php?mod=viewthread&tid=52832
https://github.com/WZTENG
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2019-12-10 17:44:09 | 显示全部楼层
theta = arctan(|I/R|);
回复

使用道具 举报

6

主题

1127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1656
金钱
1656
注册时间
2019-8-15
在线时间
102 小时
发表于 2019-12-10 18:37:41 | 显示全部楼层
帮顶                                            
成功没有捷径
回复

使用道具 举报

63

主题

238

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1136
金钱
1136
注册时间
2015-11-29
在线时间
146 小时
 楼主| 发表于 2019-12-11 17:55:17 | 显示全部楼层
自己顶起来
回复

使用道具 举报

6

主题

1127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1656
金钱
1656
注册时间
2019-8-15
在线时间
102 小时
发表于 2019-12-11 18:11:17 | 显示全部楼层
再顶                                
成功没有捷径
回复

使用道具 举报

5

主题

424

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1020
金钱
1020
注册时间
2014-9-4
在线时间
199 小时
发表于 2019-12-12 09:19:58 | 显示全部楼层
接着顶
https://github.com/WZTENG
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4477
金钱
4477
注册时间
2013-4-22
在线时间
336 小时
发表于 2019-12-14 17:30:17 | 显示全部楼层
代码也太乱了吧
回复

使用道具 举报

63

主题

238

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1136
金钱
1136
注册时间
2015-11-29
在线时间
146 小时
 楼主| 发表于 2019-12-16 11:18:55 | 显示全部楼层

看第二段
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-14 21:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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