MATLAB:巴特沃斯低通滤波器过滤信号
实验内容产生两个不同频率的正弦信号,设计合适的滤波器,输出其中的一个信号,滤除另外的一个信号。
代码:
%生成两个不同频率的信号clc;T=2;%时域长度fs=10000;%抽样频率1KHzT1=1/fs;%时域两相邻点之间的采样时间距离n=0:T1:T-1;%在T时间段的采样点数f1=200;%信号1的频率20HZf2=9000;%信号2的频率100HZx1=cos(f1*2*pi*n);%信号1x2=cos(f2*2*pi*n);%信号2x3=cos(f1*2*pi*n)+cos(f2*2*pi*n);%信号叠加xk1=fft(x3);magxk1=abs(xk1);figuresubplot(211);plot(n,x1);axis([ 0 1 -2 2]);%信号1图像xlabel('n');ylabel('x1(n)');title('x1(n)');grid on;subplot(212);plot(n,x2);%信号2图像xlabel('n');ylabel('x2(n)');title('x2(n)');grid on;figuresubplot(211);plot(n,x3);%叠加信号图像xlabel('n');ylabel('x3(n)');title('叠加信号x3(n)');grid on;subplot(212);plot(n*10000,magxk1);%叠加信号频谱幅度xlabel('f/Hz');ylabel('magxk1(n)');title('叠加信号magxk1(n)');grid on;%巴特沃斯低通滤波器过滤信号,wp<ws为低通滤波器fp=500;%数字滤波器的参数ft=700;Fs=5000; %设置抽样频率5KHzwp=fp/(Fs/2);%奈奎斯特频率归一 %设置通带频率ws=ft/(Fs/2); %设置阻带频率Rp=1; %设置通带波纹系数Rs=25; %设置阻带波纹系数 [N,Wc]=buttord(wp,ws,Rp,Rs);%N代表满足设计要求的滤波器最小阶数,Wc是等效低通滤波器截止频率fprintf('巴特沃斯滤波器 N= %4d\n',N); %显示滤波器阶数[bb,ab]=butter(N,Wc); %求巴特沃斯滤波器系数,即求传输函数的分子和分母的系数向量[Hb,wb]=freqz(bb,ab); %求巴特沃斯滤波器频率响应figureplot(wb*Fs/(2*pi), 20*log10(abs(Hb)),'b'); %巴特沃斯滤波器图形axis([0 1000 -30 2]);title('巴特沃斯数字低通幅度响应/dB');xlabel('f/Hz');ylabel('幅值/dB');line([0 max(wb*Fs/(2*pi))],[-25 -25],'color','k','linestyle','--');line([0 max(wb*Fs/(2*pi))],[-1 -1],'color','k','linestyle','--');line([500 500],[-30 2],'color','k','linestyle','--');line([700 700],[-30 2],'color','k','linestyle','--');grid onx4=filter(bb,ab,x1);%使用filter函数对信号进行滤波%参数分别为滤波器系统函数的分子和分母多项式系数向量和待滤波信号输入xk2=fft(x4);magxk2=abs(xk2);figuresubplot(211);plot(n,x4);% axis([ 0 4 -2 2]);xlabel('n');ylabel('x4(n)');title('滤波后信号时域图像x4(n)');grid on;subplot(212);plot(n*10000,magxk2);%axis([ 0 100 0 2000]);xlabel('f/Hz');ylabel('magxk2(n)');title('滤波后信号时域图像magxk2(n)');grid on;
图形: