|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
不知道哪位兄长用过频率校正中的FFT+DFT谱连续细化分析傅立叶变换方法。希望能探讨一下,谢谢。
两个问题:
1 我看这种方法的似乎很不错,突破了采样率的限制,实现的话除了计算量会大一些没有其他明显的缺点了,应该是有很好的应用前景才对,可是相关文献非常的少,应用也不广泛。那是为什么呢?
2 丁康的“离散频谱校正方法的综合比较”中,阐述这种方法的精度是非常高的。可是我的仿真中发现它远比前两种方法:重心法和比值法的精度低,不符合论文的阐述,不知道是否是自己的问题。附上程序和信号图片,希望高手能解答
我的程序是将原始数据,FFT后的数据,以及我要校正的频率点三个数据输入,最后得到一个纠正的频率输出。
我仿真的了一个99.2的正弦频率点,重心法和比值法的精度都很高,达到0.003个频率分辨率以内,而FFT+DFT法精度只有0.15个频率分辨率,与论文描述差距很大
function [n]=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
[sigrow,sigcol]=size(nsig2);
if (sigcol~=1),
error('Sig must have one column')
end
[sigrow,sigcol]=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); % [s,b] 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 编辑 ] |
-
|