feichina 发表于 2008-6-25 13:45

关于频率校正中FFT+DFT谱连续细化分析傅立叶变换方法的问题

不知道哪位兄长用过频率校正中的FFT+DFT谱连续细化分析傅立叶变换方法。希望能探讨一下,谢谢。

两个问题:
1 我看这种方法的似乎很不错,突破了采样率的限制,实现的话除了计算量会大一些没有其他明显的缺点了,应该是有很好的应用前景才对,可是相关文献非常的少,应用也不广泛。那是为什么呢?

2 丁康的“离散频谱校正方法的综合比较”中,阐述这种方法的精度是非常高的。可是我的仿真中发现它远比前两种方法:重心法和比值法的精度低,不符合论文的阐述,不知道是否是自己的问题。附上程序和信号图片,希望高手能解答

我的程序是将原始数据,FFT后的数据,以及我要校正的频率点三个数据输入,最后得到一个纠正的频率输出。
我仿真的了一个99.2的正弦频率点,重心法和比值法的精度都很高,达到0.003个频率分辨率以内,而FFT+DFT法精度只有0.15个频率分辨率,与论文描述差距很大
function =corr_gra(nsig2,t_nsig2,k);
% It is a polynominal interpolation function for signals that sampled with
% non-equal division
%
%       n_sig2:the original input signal
%       t_nsig2: fft transformed signal of the original input
%       k:the frequency you think we should use the grativity
%
%      n:the new frequency we correct

if (nargin<2),
    error('At leat 2 parameter required')
end

=size(nsig2);
if (sigcol~=1),
    error('Sig must have one column')
end

=size(t_nsig2);
if (sigcol~=1),
    error('tSig must have one column')
end

if t_nsig2(k-1)>t_nsig2(k+1),
k2=k-1;
else
k2=k+1;
end

b=max(k,k2);
s=min(k,k2);                     % is the range, then we do further DFT

div=100;
% dftstep=(nt2(b)-nt2(s))/div;

for k=0:div
%    dftt=nt2(b)+k*(dftstep);
   a(k+1)=0;
   c(k+1)=0;
end

N=length(nsig2)
for i=0:div
   for k=0:N-1
       a(i+1)=a(i+1)+(1/N)*nsig2(k+1)*cos(2*pi*k*(s+i*0.01)/N);
       c(i+1)=c(i+1)+(1/N)*nsig2(k+1)*sin(2*pi*k*(s+i*0.01)/N);
   end
   
   dftv(i+1)=sqrt(a(i+1)^2+c(i+1)^2);

end

n=s+(find(dftv==max(dftv))-1)*0.01

最后,是我仿真信号的频谱图,由在19和99.2的两个频点上的余弦信号组成,由于FFT的栅栏效应,进行频谱校正

[ 本帖最后由 feichina 于 2008-6-25 13:49 编辑 ]
页: [1]
查看完整版本: 关于频率校正中FFT+DFT谱连续细化分析傅立叶变换方法的问题