关于FFT计算相角方法求助 - TMS320C6748 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4987|回复: 7
打印 上一主题 下一主题

关于FFT计算相角方法求助

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2015-1-6 17:14:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
创龙工程师,你好,贵司的FFT程序中,已经有计算幅值的样例程序,如下   

DSPF_sp_fftSPxSP(n,CFFT_In,Cw,CFFT_Out,brev,rad,0,n);

    // 计算振幅
    for(i=0;i<n;i++)
    {
        Cmo=sqrtsp(CFFT_Out[2*i]*CFFT_Out[2*i]+CFFT_Out[2*i+1]*CFFT_Out[2*i+1]);

        if(i==0)
            Cmo=Cmo/n;
        else
            Cmo=Cmo*2/n;
    }

请问,如何计算对应的相角。谢谢



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
推荐
发表于 2015-1-7 20:12:30 | 只看该作者
tulipyyf 发表于 2015-1-7 09:00
设置成
        for(i=0;i



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 1 反对 0

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2015-1-6 17:32:30 | 只看该作者
自己解决了

回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
板凳
发表于 2015-1-6 17:39:15 | 只看该作者



呃~ 这个是一个数学问题吧

tanθ = 虚部/实部
然后用 atan2sp(tanθ) 求得角度
值不唯一 可以相差 2kπ,k∈Z
回复 支持 反对

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
地板
 楼主| 发表于 2015-1-7 08:41:22 | 只看该作者
谢谢创龙工程师
回复 支持 反对

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
5#
 楼主| 发表于 2015-1-7 08:55:44 | 只看该作者
早上发现一个问题
我设置一个曲线如下:
        for(i=0;i<n;i++)
                Input[i]=20+
                30*sinsp(2*PI*1.00*(i/fs)+PI*30/180)+
                3*sinsp(2*PI*2*1.00*(i/fs)+PI*60/180)+
                2*sinsp(2*PI*3*1.00*(i/fs)+PI*90/180)+
                0.3*sinsp(2*PI*4*1.00*(i/fs)+PI*120/180)+
                0.2*sinsp(2*PI*5*1.00*(i/fs)+PI*150/180)+
            0.1*sinsp(2*PI*6*1.00*(i/fs)+PI*180/180);

        // 计算振幅
        for(i=0;i<n;i++)
        {
                Cmo[i]=sqrtsp(CFFT_Out[2*i]*CFFT_Out[2*i]+CFFT_Out[2*i+1]*CFFT_Out[2*i+1]);

                if(i==0)
                        Cmo[i]=Cmo[i]/n;
                else
                        Cmo[i]=Cmo[i]*2/n;
        }
        i=0;

        //计算相位       
        for(i=0;i<n;i++)
        {
                Cmo_phase[i]=atan2dp(CFFT_Out[2*i+1],CFFT_Out[2*i]);
        }

发现相位结果不对
基波相位=5.23
二次谐波=5.75
三次谐波=6.28
四次谐波=0.52
五次谐波=1.04
六次谐波=1.57

好像整体角度偏移了 90度。请指教


回复 支持 反对

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
6#
 楼主| 发表于 2015-1-7 08:57:37 | 只看该作者
CFFT_Out[2*i+1]  应该是虚部,CFFT_Out[2*i] 应该是实部  是吧
回复 支持 反对

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
7#
 楼主| 发表于 2015-1-7 09:00:52 | 只看该作者
设置成
        for(i=0;i<n;i++)
                Input[i]=20+
                30*cossp(2*PI*1.00*(i/fs)+PI*30/180)+
                3*cossp(2*PI*2*1.00*(i/fs)+PI*60/180)+
                2*cossp(2*PI*3*1.00*(i/fs)+PI*90/180)+
                0.3*cossp(2*PI*4*1.00*(i/fs)+PI*120/180)+
                0.2*cossp(2*PI*5*1.00*(i/fs)+PI*150/180)+
            0.1*cossp(2*PI*6*1.00*(i/fs)+PI*180/180);

角度就对了。但是数字信号处理书本上均是 sin函数构成的,感觉奇怪
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-5-11 23:29 , Processed in 0.041060 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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