zoomfft的matlab仿真

1.问题描述:

       FFT虽然迅速方便地实现了数字频谱分析的功能,但是对于希望在某些感兴趣的频率范围内以较高的分辨率进行频域分析,传统的 FFT 就做不到了。因为普通 FFT在频域的分辨率是有一定限度的,其分析频率范围总是从0Hz 开始到 1/2倍的采样频率为最高分析频率。这种分析方法称为基带变换分析法。设采样频率为fs,FFT点数为NFFT,频率分辨率△f的关系式为△f =fs/NFFT。可以看出,一旦采样频率fs和NFFT确定后,频率分辨率是一个固定值。
       ZOOM-FFT称为细化的快速傅立叶变换,又称为选带快速傅立叶变换。ZOOM-FFT的功能是对信号的频率进行局部细化放大,使感兴趣的频带获得较高的频率分辨率。实现FFT细化功能的算法有几种,如频移法-、相位补偿法和最大熵谱法等,目前应用最关的是频移法。
频移细化FFT的方法是基于离散傅立叶变幻的频移原理。设fk为所需要细化的频带的中心频率,对信号乘以exp(-j2pifkt)进行数字化平移后,原fk处的谱线移至频率轴的0处,用低通滤波器滤除所需细化的频段外的频率成分,并以细化倍数为间隔进行重采样,最后对重采样后的数据做FFT变换,并对变换结果重新排序。

2.部分程序:

function SigList_ButtonDownFcn(hObject, eventdata, handles)
% hObject    handle to SigList (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
val=get(handles.SigList,'value');
liststr=get(handles.SigList,'string');
ystr=liststr{val,1};

L=length(ystr);
 for i=1:L
  SS=ystr(6:end);
    indx=find(SS=='*');   
    indx2=find(SS=='+');  
 end   
FF=SS((indx(3)+1):(indx(4)-1)); 
Amp=ystr(6:4+indx(1));
PH=SS((indx2(1)+1):(indx2(2)-2));
NO=SS((indx2(2)+1):(indx(5)-1));
val=SS((indx(1)+1):(indx(1)+3));
if strcmp(val,'sin') pval=1; end
if strcmp(val,'cos') pval=2; end
if strcmp(val,'squ') pval=3; end
set(handles.SigAmp,'string',Amp); %幅值
set(handles.SigFreq,'string',FF); %频率
set(handles.SigPhase,'string',PH);% 相位
set(handles.NoiseAmp,'string',NO);% 噪声的幅值
set(handles.SigType,'value',pval);%信号类型

3.仿真结论:

C-04

猜你喜欢

转载自blog.csdn.net/ccsss22/article/details/114896114
今日推荐