聊聊FFT(二)----幅值、模值与分辨率

以常见的家用交流220V(以下称AC220V)工频电信号为例:

      大家都知道家里的插座内有220V的电,可以给电饭锅、热水壶、空调冰箱等等电器供电。至于220V具体指的是什么可能非理工科背景的同学没有深究过。

        “有效值又称“均方根值”。一种用以计量交流电大小的值交流电通过某电阻,在一周期内所产生的热量与直流电通过该电阻在同样时间内产生的热量相等,此直流电的量值则是该交流电的有效值"------百度百科;

        人们常说的AC220V实际指的是火线与零线之间的有效值,用万用表可以直接量出来,但实际上火线零线之间最大的压差有311V之高:

           这个311V表示的就是幅值(有效值的√2倍)

           关于模值的理解需要先知道分辨率是什么。

           用模拟期间对模拟信号的采样必须满足"奈奎斯特定理"。

          这个定理的意思很简单,如要采集到完整的原始模拟信号,对其采样的频率必须大于该原始模拟信号频率2倍及以上。当然倍数越高得到的结果越接近原始值,但耗费的时间也就越长。

            比如用一颗模拟芯片去采集AC1V,频率50HZ的信号,理论上模拟芯片采样频率至少要达到100HZ。实际应用中不会这么做,因为100HZ太低了,如果要通过FFT运算得到尽可能准确的结果,多少HZ合适呢?---10240HZ。

          这个频率表示每1秒钟可以对信号采样10240次,采样一次耗时约0.1毫秒;连续采样1024次,就会得到1024个样本数据,耗时约100毫秒;100毫秒包含了5个周期的AC1V信号波形:

    

         分辨率=采样频率÷采样样本数的值:10240HZ/1024=10HZ。

        因为FFT输出的频率分布并不是无限细分的,如果分辨率是10HZ的话,输出的结果如下:

            频率 (HZ)       模值(V)    相位(度)

                 0                  0                  0

                10                 0

                20                 0

                30                 0

                40                 0

                50                724

                60                 0

                70                 0

                。。            。。

         可以看出10HZ分辨率下FFT计算结果是以10的整数倍分布。

        如果把采样频率降为1024HZ,那么FFT输出的结果便会以1HZ的整数倍分布:

                       

             频率 (HZ)       模值(V)    相位(度)

                 0                  0                  0

                1                   0

                2                   0

               .....                 ......

                48                 0

                49                 0

                50                724

                51                 0

                52                 0

                。。            。。

             

         其中模值=幅值*样本数的一半:1*√2*1024/2=724;FFT计算出模值后便可以推算出幅值及有效值。

          幅值,模值,分辨率便是构成FFT计算的三要素。

MATLAB中使用FFT频谱分析时频率分辨率问题-频率分辨率.rar MATLAB中使用FFT频谱分析时频率分辨率问题 最近做FFT时,使用的采样频率和信号长度的取舍一直没有搞清楚,后来在论坛上发了一个贴子《总结一下使用FFT和维纳-辛钦定理求解PSD问题》(讨论见https://www.ilovematlab.cn/thread-27150-1-1.html,特别感谢会员songzy41,他的问题给了我很大启示),跟帖中给了我不少启示,并且让我对“频率分辨率”这个概念有了更深入的理解。再次一并感谢论坛的高手们。 频率分辨率,顾名思义,就是将信号中两个靠的很近的频谱分开的能力。 信号x长度为Ts,通过傅氏变换后得到X,其频率分辨率为Δf=1/T(Hz),若经过采样后,假设采样频率为fs=1/Ts,而进行频谱分析时要将这个无穷长的序列使用窗函数截断处理,假设使用矩形窗,我们知道,矩形窗的频谱为sinc函数,主瓣宽度可以定义为2*pi/M,M为窗宽,那么,时域相乘相当于频域卷积,频域内,这一窗函数能够分辨出的最近频率肯定不可能小于2*pi/M了,也就是如果数据长度不能满足2*pi/M<|w2-w1|(w2,w1为两个靠的很近的频率),那么在频谱分析时,频谱上将不能分辨出这两个谱,由于w2-w1=2*pi/fs=2*pi*Δf/fs也就是2*pi/M<2*piΔf/fs,得到Δf的限制为fs/M,这就是窗函数宽度的最小选择,就是说,根据Shannon采样定理确定了采样频率后,要根据靠的最近的谱峰来确定最小的采样长度,这样,所作出来的频谱才能分辨出那两个谱峰,也就是拥有了相应的频率分辨率。 几个例子: 考虑双弦信号:x = sin sin;根据Shannon采样定理,采样频率要大于截止频率的两,这里选采样频率为80,那么,我们可以看到,Δf为0.2Hz,那么,最小的数据长度为0.2/80=400,但是对弦信号的频谱分析经验告诉我们,在截断时截断时的数据要包含整周期,并且后面不宜补零以避免频谱泄露(这一点见胡广书《数字信号处理导论》,清华大学出版社),那么,我们要选择至少980个点,才能保含到一个整周期,另外,FFT的经验告诉我们作分析时最好选择2的整数次幂,我们选择靠的最近的1024点。分析结束。 [CODE] Fs = 80; n = 0:1/Fs:1023*1/Fs; x = sin sin; N = length; figure; X = fftshift); plot*Fs/N,abs*2/N); grid on; axis; 这是按照我们的分析进行的编程和图形 zheng.jpg 可以看出这两个谱峰很好的被分辨开来,9.8Hz不在谱线上,所以不为1,以下是一些对比: [CODE] Fs = 80; n = 0:1/Fs:1023*1/Fs; x = sin sin; N = length; X = fftshift); figure; subplot plot*Fs/N,abs*2/N); grid on; axis; title; n = 0:1/Fs:979*1/Fs; x = sin sin; N = length; X = fftshift); subplot plot*Fs/N,abs*2/N); grid on; axis; title; n = 0:1/Fs:399*1/Fs; x = sin sin; N = length; X = fftshift); figure; subplot plot*Fs/N,abs*2/N); grid on; axis; title; Fs = 20; n = 0:1/Fs:1024*1/Fs; x = sin sin; N = length; X = fftshift); subplot plot*Fs/N,abs*2/N); grid on; axis; title; 结果如下: 1024.jpg 400.jpg 这是我在做FFT以及论坛中的问题时所得到的一点启发,不当之处还请大家指。OO~ 频率分辨率.rar 为了方便大家,我将doc版报告和m文件一起上传,和帖子内容一样。OO~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值