求助,关于信号+Hanning窗的计算,我用Matlab仿真,效果差异很大啊

2019-12-16 22:33发布

额,想做个FFT的频谱校正
就按照书上的比值校正法(内插法)来做了,输出的数据加了hanning窗,但是我出来的数据和原数值差异很大啊。这个是怎么回事,我的Matlab程序如下,望高手指点下:
clear all;clc   

N=64;    %采样点数
fs=1600  %采样频率
f=50;    %信号频率
dc=2043; %直流分量
a=2000   %50Hz信号的幅值
ph=60;   %信号的初始相位

for t=0:1:N-1
    x(t+1)=(a*sin(2*pi*f*t/fs+ph*pi/180)+dc);%采样点
    x(t+1)=x(t+1)*(0.5-0.5*cos(2*pi*t/N));%时域加Haning窗
end

xfft=fft(x,N);   %做FFT变换
y=abs(xfft);    %求取模值
[Y1, k]=max(y(2:N/2)); %找出最高的的谱线
ka=y(k)/y(k+1);%求取差值Ka
r=(2-ka)/(1+ka) %求出系数
a0=2*pi*r*(1-r*r)*y(k)/(N*sin(pi*r))%求出a0的幅值
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
again
1楼-- · 2019-12-18 00:05
加不加窗与你的校正算法有关系的,我提供的算法就等于加窗了,这些都可以用数学公式证明的,你照用就是了
again
2楼-- · 2019-12-18 02:09
你有这两本书足够了,自己慢慢琢磨吧,这些算法真的要研究够需要很长时间的,我们至少也是花了几年来搞这些算法
dwlovework
3楼-- · 2019-12-18 06:31
回复【7楼】again
-----------------------------------------------------------------------

嗯,我会的。我自己应运了下,发现我直接FFT不带校正算法的时候波动还比较小。用了您的校正算法,波动反倒增大了。我发回AD的数据,看到AD的数据出来并不是正常的正弦波,估计这样的话AD会给这个引入了谐波。然后我就想着相减小下谐波的干扰,所以就想着给加窗
dwlovework
4楼-- · 2019-12-18 10:08
回复【8楼】again
-----------------------------------------------------------------------
我想到了,加窗应该实在这两句话上面加的吧,您在频域上给加窗了。。
z1=xfft(k)-(xfft(k-1)+xfft(k+1))/2;  
z2=xfft(k+1)-(xfft(k)+xfft(k+2))/2;
dwlovework
5楼-- · 2019-12-18 13:07
 精彩回答 2  元偷偷看……
yexiangru2017
6楼-- · 2019-12-18 13:29
again 发表于 2011-8-6 13:32
加不加窗与你的校正算法有关系的,我提供的算法就等于加窗了,这些都可以用数学公式证明的,你照用就是了 ...

again大哥,您好。

研读您的程序,又看了些资料,发现r=(2-ka)/(1+ka) 是和资料上的公式对应的。

只是下面的两行没有理解:还请赐教。

z1=xfft(k)-(xfft(k-1)+xfft(k+1))/2;
z2=xfft(k+1)-(xfft(k)+xfft(k+2))/2;




书上面的公式如下

11.png (78.04 KB, 下载次数: 0)

下载附件

2018-10-31 16:05 上传






一周热门 更多>