matla窗口制作
源代码在线查看: example01.m
%___________________________________________________利用fircls函数,自行设计窗函数,对信号进 %___________________________________________________行滤波(带通滤波器)____________________ t=0:1/600:1; % 信号的采样频率为600hz,(w=2*pi/fs) sig=sin(2*pi*15*t)+0.5*sin(2*pi*90*t)+0.2*sin(2*pi*200*t); n=50; %窗的宽度决定所设计的滤波器的过度带的宽度 f=[0 0.2 0.4 1]; %设置窗函数的四个临界频率 a=[0 1 0]; %确定滤波器的类型 up=[0.02 1.02 0.01]; %确定滤波器的上限参数 lo=[-0.02 0.98 -0.01]; %确定滤波器的下限参数 b=fircls(n,f,a,up,lo); %返回其单位脉冲响应 newsig=fftfilt(b,sig); %通过b滤波器对向量sig进行滤波 ft=t(300:350); %后面四行表示对滤除后的信息进行处理,让其能在规定的采样频率中显示出来 ns=newsig(300:350); zns=interp(ns,12); %在300到350之间每一中插入12个数据,以至于最终有600个数据,使得向量匹配 znt=interp(ft,12); %_________________________________绘制图象_____________________________________ subplot(321); plot(t,sig); title('原始信号'); %—————————————————————————————————————————— subplot(322); [H,W]=freqz(sig); plot(W/pi,abs(H)); title('原始信号频谱'); grid %—————————————————————————————————————————— subplot(323); stem(b); title('窗函数的脉冲响应'); %—————————————————————————————————————————— subplot(324); [H,W]=freqz(b); plot(W/pi,abs(H)); title('窗函数的频谱'); grid %————————————————————————————————————————— subplot(325); plot(znt,zns); title('滤波后的信号'); subplot(326); %__________________________________________________________________________ [H,W]=freqz(newsig); plot(W/pi,abs(H)); title('滤除后的频谱'); grid