%==调用 xtg 产生信号 xt, xt 长度 N=1000, 并显示 xt 及其频谱 ,=========
N=1000;xt=xtg;
fp=120; fs=150;Rp=0.1;As=60;Fs=1000; % 输入给定指标
% (1) 用窗函数法设计滤波器
wc=(fp+fs)/Fs; % 理想低通滤波器截止频率 ( 关于 pi 归一化)
B=2*pi*(fs-fp)/Fs; % 过渡带宽度指标
Nb=ceil(11*pi/B); %blackman 窗的长度 N
hn=fir1(Nb-1,wc,blackman(Nb));
Hw=abs(fft(hn,1024)); % 求设计的滤波器频率特性
ywt=fftfilt(hn,xt,N); % 调用函数 fftfilt 对 xt 滤波
%以下为用窗函数法设计法的绘图部分(滤波器损耗函数,滤波器输出信号波形)
f=(0:1023)*Fs/1024;
figure(2)
subplot(3,1,1)
plot(f,20*log10(Hw/max(Hw)));grid;title('(3) 窗函数法:低通滤波器幅频特性 ')
axis([0,Fs/2,-120,20]);
xlabel('f/HZ');ylabel(' 幅度 ')
t=(0:N-1)/Fs;Tp=N/Fs;
subplot(3,1,2)
plot(t,ywt);grid;
axis([0,Tp/2,-1,1]);xlabel('t/s');ylabel('y_w(t)');
title('(4) 滤波噪声后的信号波形 ')
N1=length(t);
k=0:N1-1;f1=k/Tp;
yy1=fft(ywt,N1);
subplot(3,1,3);
stem(f1,abs(yy1)/max(abs(yy1)),'.');
axis([0,Fs/5,0,1.2]);
xlabel('f/Hz');ylabel('幅度');
title('(4) 滤波噪声后的信号波形的幅频特性 ')
% (2) 用等波纹最佳逼近法设计滤波器
fb=[fp,fs];m=[1,0]; % 确定 remezord 函数所需参数 f,m,dev
dev=[(10^(Rp/20)-1)/(10^(Rp/20)+1),10^(-As/20)];
[Ne,fo,mo,W]=remezord(fb,m,dev,Fs); % 确定 remez 函数所需参数
hn=remez(Ne,fo,mo,W); % 调用 remez 函数进行设计
Hw=abs(fft(hn,1024)); % 求设计的滤波器频率特性
yet=fftfilt(hn,xt,N); % 调用函数 fftfilt 对 xt 滤波
%以下为用等纹波设计法的绘图部分(滤波器损耗函数,滤波器输出信号波形)
f=(0:1023)*Fs/1024;
figure(3)
subplot(3,1,1)
plot(f,20*log10(Hw/max(Hw)));grid;title('(5) 等纹波设计法:低通滤波器幅频特性 ')
axis([0,Fs/2,-80,10]);
xlabel('f/HZ');ylabel(' 幅度 ')
%t=[0:N-1]/Fs;Tp=N/Fs;
subplot(3,1,2)
plot(t,yet);grid;
axis([0,Tp/2,-1,1]);xlabel('t/s');ylabel('y_e(t)');
title('(6) 滤波噪声后的信号波形 ')
N1=length(t);
k=0:N1-1;f1=k/Tp;
yy2=fft(yet,N1);
subplot(3,1,3);
stem(f1,abs(yy2)/max(abs(yy2)),'.');
axis([0,Fs/5,0,1.2]);
xlabel('f/Hz');ylabel('幅度');
title('(4) 滤波噪声后的信号波形的幅频特性 ')