yangzj 发表于 2006-9-5 15:53

关于ZFFT

ZFFT的实质是把一个宽带信号通过带通滤波器后变成一个窄带信号,从而可以通过选抽(即重采样)来降低采样频率,进而可用少数点的FFT来达到高的频率分辨率.可分辨出滤出的窄带信号的细微频谱结构,可以说ZFFT就像一个可变焦的相机(而CZT则是不可变焦的).

丁康老师基于复解析带通滤波器的复调制细化谱分析方法的基本步骤:
1、构造复解析带通滤波器,
2、带通滤波;
3、选抽;
4、移频(将带通滤波器的下截止频率移到0频);
5、做FFT。
6、频率调整(即把5的结果的0频看成是下截止频率)

其中2,3,4步可合成一步来做,这也是基于复解析带通滤波器的优点。

ZFFT必须采长样,如果细化D倍,步骤5中FFT点数为N,滤波器半阶数为M的话,则原始信号点数至少为
(N-1)*D+2*M+1个点。
当然你说直接做N*D个点的FFT,那频率分辨率确实和ZFFT的是一样的。

另个在丁康老师的论文里还提到了滤波器半阶数M和外扩系数的确定,以及二级细化。感兴趣的朋友可找来看看。

nmdb 发表于 2010-4-5 20:46

回复 楼主 yangzj 的帖子

楼主您好,我也在做一个简单的频率细化算例。其中f1=104;   %信号1f2=108;   %信号2 ;f3=110;   %信号3.
为了分离这个信号的频率成分,我把这个信号的频率移动到0点,然后把移动以后的信号重采样,看起来这个信号的的3个频率成分分离开了,可是,这三个信号的频率和fft的系数无法对应起来。请问楼主,在频率细化以后如何定义频率轴啊?我的程序如下:
%频率选择fft
% notes:    xt is target signal; xn is the frequency shfited signal.
close all
clear
clc
f0=100;   %细化的上截至频率
f1=104;   %信号1
f2=108;   %信号2
f3=110;   %信号3
f4=100;   %细化的上截至频率
%
%-------------------------------------------------------------------------
fs=5120;                                                               %|
N=512;                                                                   %|
n1=0:(N*10)-1;                                                         %|
deltT=1/fs;                                                            %|
%-------------------------------------------------------------------------
%-------------------------------------------------------------------------
xt=cos(2*pi*f1*n1*deltT)+cos(2*pi*f2*n1*deltT)+cos(2*pi*f3*n1*deltT);   %|
%-------------------------------------------------------------------------
%-------------------------------------------------------------------------
XT=2*abs(fft(xt,N))/N;                            %FFT for original data|
Hz_T=fs/N*n1;                                    %Frequency axias   |
figure                                             %                      |
half_Hz_T=Hz_T(1:N/2);
plot(half_Hz_T,XT(1:N/2));                        %                     |
xlabel('frequency')                               %                     |
grid on                                           %                     |
title('frequency of original data')               %                     |
%-------------------------------------------------------------------------

%----------------------------------------------------------------------
fe=(f0+f4)/2;                  % frequency used for target signal shift
wn1=exp(-j*2*pi*n1*fe/fs);       % freuqency shift function
xn=xt.*wn1;                     % frequency shifted
%
D=10;                        %细化倍数
% fs_zoom=fs/D;                % new samping frequency
re_xn1=reshape(xn,D,[]);      % re-sample signal of xn
re_xn2=re_xn1(1,:);
re_N=length(re_xn2);
n2=0:(re_N-1);
wn2=exp(j*2*pi*n2*fe/fs);

re_xn2=re_xn2.*wn2;
re_XN=2*abs(fft(re_xn2))/re_N;
k1=0:(re_N-1);
% re_Hz=(0:re_N-1)/fs_zoom+fe;
figure
plot(k1(1:(re_N/2)),re_XN(1:re_N/2))
grid on

micheal0311 发表于 2011-5-6 08:36

{:{23}:}

_eason 发表于 2012-10-8 16:00

不明白为什么zfft可以分开频率间隔小于物理分辨率的频率。。。

rubstone 发表于 2016-10-22 10:06

_eason 发表于 2012-10-8 16:00
不明白为什么zfft可以分开频率间隔小于物理分辨率的频率。。。

应该不可能吧?楼主已经说了“当然你说直接做N*D个点的FFT,那频率分辨率确实和ZFFT的是一样的。”这说明,不管你如何细化,是不可能突破采样频率和采样点数决定的物理分辨率的。
页: [1]
查看完整版本: 关于ZFFT