function [f2,y2,fi,fa]=zoomfft(x, fs, fi, d, nfft, handles)
% Input
% x : 被测信号
% fs : 采样频率
% fi : 细化的最低频率
% d : 放大倍数(细化倍数)
% nfft : 作细化FFT长
%
%%
%计算输入数据长度
nt=length(x);
%最大细化截止频率
fa=fi+0.5*fs/d;
%取大于nt且与nt最接近的2的整数次方为FFT长度
nf=2^nextpow2(nt);
%确定细化带宽的数据长度
na=round(0.5*nf/d+1);
% 1.频移
%建立一个按1递增的向量
n=0:nt-1;
%建立单位旋转因子进行频移
b=n*pi*(fi+fa)/fs;
%乘以单位旋转引自进行频移
y=x.*exp(-i*b);
% 2.频移后的低通滤波(频域滤波)
%FFT变换
b=fft(y,nf);
%正频率带桶内的元素赋值
a(1:na)=b(1:na);
%负频率带通内的元素赋值
a(nf-na+1:nf)=b(nf-na+1:nf);
%FFT变换
b=ifft(a,nf);
% 3.重采样
c=b(1:d:nt);
% 4.进行细化FFT变换
a=fft(c,nfft)*2/nfft;
% 5.变换结果重新排序
y2=zeros(1,nfft/2);
%排列负频率段的数据
y2(1:nfft/4)=a(nfft-nfft/4+1:nfft);
%排列正频率段的数据
y2(nfft/4+1:nfft/2)=a(1:nfft/4);
n=0:(nfft/2-1);
%定义细化FFT频率向量
f2=fi+n*2*(fa-fi)/nfft;
%%
%对输入数据作FFT用来变化比较
%FFT变换
y1=fft(x,nfft)*2/nfft;
f1=n*fs/nfft;
%定义与细化FFT频率向量相同的频率范围
ni=round(fi*nfft/fs+1);
na=round(fa*nfft/fs+1);
%绘制输入时程曲线图形
%%
% figure
% subplot(2,1,1);
% t=0:1/sf:(nt-1)/sf;
% % nn=1:3000;
% plot(t,x);
% xlabel('时间(s)');
% ylabel('幅值');
% grid on
%在相同的频率范围下绘制幅频曲线图
% subplot(212);
nn=ni:na;
axes(handles.axes_fft)
plot(f1(nn),abs(y1(nn)),':b',f2,abs(y2),'r');
title('信号频域图')
xlabel('频率(Hz)');
ylabel('幅值');
legend('普通','细化');
grid on
%打开文件输出细化后的数据
% fid=fopen(fno,'w');
% for k=1:nfft/2
% %每行输出3个实行数据,f为频率,y2的实和虚部
% fprintf(fid,'%f %f %f\n',f2(k),real(y2(k)),imag(y2(k)));
% end
% status=fclose(fid);
我想问一下,设计滤波器那一段根据的是什么原理啊?设计出来的是什么样的滤波器