高通滤波器matlab程序代码
- 格式:pdf
- 大小:46.57 KB
- 文档页数:2
数字信号处理:已知通带截止频率fp=5kHz,通带最大衰减ap=2dB,阻带截止频率fs=2kHz,阻带最小衰减as=30dB,按照以上技术指标设计巴特沃斯低通滤波器:wp=2*pi*5000;ws=2*pi*12000;Rp=2;As=30;[N,wc]=buttord(wp,ws,Rp,As,'s');[B,A]=butter(N,wc,'s');k=0:511;fk=0:14000/512:14000;wk=2*pi*fk;Hk=freqs(B,A,wk);subplot(2,2,1);plot(fk/1000,20*log10(abs(Hk)));grid onxlabel('频率(kHz)');ylabel('幅度(dB)')axis([0,14,-40,5])切比雪夫1型低通滤波器:wp=2*pi*3000;ws=2*pi*12000;Rp=0.1;As=60;[N1,wpl]=cheb1ord(wp,ws,Rp,As,'s');%cheb1ord,里面的是1,不是L[B1,A1]=cheby1(N1,Rp,wpl,'s');subplot(2,2,1);fk=0:12000/512:12000;wk=2*pi*fk;Hk=freqs(B1,A1,wk);plot(fk/1000,20*log10(abs(Hk)));grid onxlabel('频率(kHz)');ylabel('幅度(dB)')axis([0,12,-70,5])椭圆模拟低通滤波器:wp=2*pi*3000;ws=2*pi*12000;Rp=0.1;As=60;[N,wpo]=ellipord(wp,ws,Rp,As,'s');[B,A]=ellip(N,Rp,As,wpo,'s');subplot(2,2,1);fk=0:12000/512:12000;wk=2*pi*fk;Hk=freqs(B1,A1,wk);plot(fk/1000,20*log10(abs(Hk)));grid onxlabel('频率(kHz)');ylabel('幅度(dB)')axis([0,12,-70,5])p195-14wp=2*4/80;ws=2*20/80;rp=0.5;rs=45;[N,wc]=buttord(wp,ws,rp,rs);[B,A]=butter(N,wc);[hk,wk]=freqz(B,A);fk=wk/pi*40;plot(fk,20*log10(abs(hk)));axis([0,30,-100,0])xlabel('频率(kHZ)');ylabel('幅度(db)');grid on P195-16wp=2*325/2500;ws=2*225/2500;rp=1;rs=40;[N,wc]=ellipord(wp,ws,rp,rs);[B,A]=ellip(N,rp,rs,wc);[hk,wk]=freqz(B,A);fk=wk/pi*40;plot(fk,20*log10(abs(hk)));axis([0,30,-100,0])xlabel('频率(kHZ)');ylabel('幅度(db)');grid onP195-15wp=2*4/80;ws=2*20/80;rp=0.5;rs=45;[N,wc]=cheb1ord(wp,ws,rp,rs);[B,A]=cheby1(N,rp,wc);[hk,wk]=freqz(B,A);fk=wk/pi*40;plot(fk,20*log10(abs(hk)));axis([0,30,-100,0])xlabel('频率(kHZ)');ylabel('幅度(db)');grid on 切比雪夫低通滤波器wp=2*pi*3000;ws=2*pi*12000;rp=0.1;as=60;[N1,wp1]=cheb1ord(wp,ws,rp,as,'s');[B1,A1]=cheby1(N1,rp,wp1,'s');subplot(2,2,1);fk=0:12000/512:12000;wk=2*pi*fk;hk=freqs(B1,A1,wk);plot(fk/1000,20*log10(abs(hk)));grid onxlabel('频率(kHZ)');ylabel('幅度(db)');axis([0,12,-70,5])双音频检测audiofile='test.wav'[in_audio,fs,bits]=wavread(audiofile); [b,a]=cheby1(5,0.1,0.3);out_audio=filter(b,a,in_audio);sound(out_audio,fs,bits);wavwrite(out_audio,fs,bits,'test_out'); xk1=fft(in_audio,512);xk2=fft(out_audio,512);subplot(2,1,1);stem(abs(xk1));subplot(2,1,2);stem(abs(xk2));巴特沃斯模拟高通滤波器。
各类滤波器的MATLAB程序一、理想低通滤波器IA=imread('lena.bmp');[f1,f2]=freqspace(size(IA),'meshgrid');Hd=ones(size(IA));r=sqrt(f1.^2+f2.^2);Hd(r>0.2)=0;Y=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=ifft2(Ya);figuresubplot(2,2,1),imshow(uint8(IA));subplot(2,2,2),imshow(uint8(Ia));figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');二、理想高通滤波器IA=imread('lena.bmp');[f1,f2]=freqspace(size(IA),'meshgrid');Hd=ones(size(IA));r=sqrt(f1.^2+f2.^2);Hd(r<0.2)=0;Y=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya));figuresubplot(2,2,1),imshow(uint8(IA));subplot(2,2,2),imshow(uint8(Ia));figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');三、B utterworth低通滤波器IA=imread('lena.bmp');[f1,f2]=freqspace(size(IA),'meshgrid');D=0.3;r=f1.^2+f2.^2;n=4;for i=1:size(IA,1)for j=1:size(IA,2)t=r(i,j)/(D*D);Hd(i,j)=1/(t^n+1);endendY=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya));figuresubplot(2,2,1),imshow(uint8(IA));subplot(2,2,2),imshow(uint8(Ia));figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');四、B utterworth高通滤波器IA=imread('lena.bmp');[f1,f2]=freqspace(size(IA),'meshgrid');D=0.3;r=f1.^2+f2.^2;n=4;for i=1:size(IA,1)for j=1:size(IA,2)t=(D*D)/r(i,j);Hd(i,j)=1/(t^n+1);endendY=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya));figuresubplot(2,2,1),imshow(uint8(IA));subplot(2,2,2),imshow(uint8(Ia));figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');五、高斯低通滤波器IA=imread('lena.bmp');IB=imread('babarra.bmp');[f1,f2]=freqspace(size(IA),'meshgrid');D=100/size(IA,1);r=f1.^2+f2.^2;Hd=ones(size(IA));for i=1:size(IA,1)for j=1:size(IA,2)t=r(i,j)/(D*D);Hd(i,j)=exp(-t);endendY=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya));figuresubplot(2,2,1),imshow(uint8(IA));subplot(2,2,2),imshow(uint8(Ia));figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');六、高斯高通滤波器IA=imread('lena.bmp');IB=imread('babarra.bmp');[f1,f2]=freqspace(size(IA),'meshgrid');%D=100/size(IA,1);D=0.3;r=f1.^2+f2.^2;for i=1:size(IA,1)for j=1:size(IA,2)t=r(i,j)/(D*D);Hd(i,j)=1-exp(-t);endendY=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya));figuresubplot(2,2,1),imshow(uint8(IA));subplot(2,2,2),imshow(uint8(Ia));figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');七、梯形低通滤波器IA=imread('lena.bmp');IB=imread('babarra.bmp');[f1,f2]=freqspace(size(IA),'meshgrid');%D=100/size(IA,1);D0=0.1;D1=0.4;r=sqrt(f1.^2+f2.^2);Hd=zeros(size(IA));Hd(r<D0)=1;for i=1:size(IA,1)for j=1:size(IA,2)if r(i,j)>=D0 & r(i,j)<=D1Hd(i,j)=(D1-r(i,j))/(D1-D0);endendendY=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya));figuresubplot(2,2,1),imshow(uint8(IA));subplot(2,2,2),imshow(uint8(Ia));figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');八、梯形高通滤波器IA=imread('lena.bmp');IB=imread('babarra.bmp');[f1,f2]=freqspace(size(IA),'meshgrid');%D=100/size(IA,1);D0=0.1;D1=0.4;r=sqrt(f1.^2+f2.^2);Hd=ones(size(IA));Hd(r<D1)=0;for i=1:size(IA,1)for j=1:size(IA,2)if r(i,j)>=D0 & r(i,j)<=D1Hd(i,j)=(D0-r(i,j))/(D0-D1);endendendY=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya));figuresubplot(2,2,1),imshow(uint8(IA));subplot(2,2,2),imshow(uint8(Ia));figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');九、用其他方法编写的理想低通、理想高通、Butterworth低通、同态滤波程序1、理想低通i1=imread('lena.bmp');i2=imnoise(i1,'salt & pepper',0.1);f=double(i2);k=fft2(f);g=fftshift(k);[N1,N2]=size(g);d0=50;u0=floor(N1/2)+1;v0=floor(N2/2)+1;for i=1:N1for j=1:N2d=sqrt((i-u0)^2+(j-v0)^2);if d<=d0h=1;elseh=0;endy(i,j)=g(i,j)*h;endendy=ifftshift(y);E1=ifft2(y);E2=real(E1);figuresubplot(2,2,1),imshow(uint8(i1));subplot(2,2,2),imshow(uint8(i2));subplot(2,2,3),imshow(uint8(E2));2、理想高通i1=imread('lena.bmp');i2=imnoise(i1,'salt & pepper',0.1); f=double(i2);k=fft2(f);g=fftshift(k);[N1,N2]=size(g);n=2;d0=10;u0=floor(N1/2)+1;v0=floor(N2/2)+1;for i=1:N1for j=1:N2d=sqrt((i-u0)^2+(j-v0)^2);if d<=d0h=0;else h=1;endy(i,j)=g(i,j)*h;endendy=ifftshift(y);E1=ifft2(y);E2=real(E1);figuresubplot(2,2,1),imshow(uint8(i1)); subplot(2,2,2),imshow(uint8(i2)); subplot(2,2,3),imshow(uint8(E2));3、Butterworth低通i1=imread('lena.bmp');i2=imnoise(i1,'salt & pepper',0.1); f=double(i2);k=fft2(f);g=fftshift(k);[N1,N2]=size(g);n=2;d0=50;u0=floor(N1/2)+1;v0=floor(N2/2)+1;for i=1:N1for j=1:N2d=sqrt((i-u0)^2+(j-v0)^2);h=1/(1+(d/d0)^(2*n));y(i,j)=g(i,j)*h;endendy=ifftshift(y);E1=ifft2(y);E2=real(E1);figuresubplot(2,2,1),imshow(uint8(i1)); subplot(2,2,2),imshow(uint8(i2)); subplot(2,2,3),imshow(uint8(E2));4、同态滤波I=rgb2gray(imread('fabric00.bmp')); [M,N]=size(I);T=double(I);L=log(T);F=fft2(L);A=2;B=0.3;for i=1:Mfor j=1:ND(i,j)=((i-M/2)^2+(j-N/2)^2);endendc=1.1;%锐化参数D0=max(M,N);H=(A-B)*(1-exp(c*(-D/(D0^2))))+B;F=F.*H;F=ifft2(F);Y=exp(F);figuresubplot(1,2,1),imshow(I);subplot(1,2,2),imshow(uint8(real(Y)));十、十一、Gabor滤波器。
实践二:理想高通滤波器、Butterworth高通滤波器、高斯高通滤波器2.1.1理想高通滤波器实践代码:I=imread('');subplot(221),imshow(I);title('原图像');s=fftshift(fft2(I));subplot(223),imshow(abs(s),[]);title('图像傅里叶变换所得频谱');subplot(224),imshow(log(abs(s)),[]);title('图像傅里叶变换取对数所得频谱');[a,b]=size(s);a0=round(a/2);b0=round(b/2);d=10;p=;q=;fori=1:aforj=1:bdistance=sqrt((i-a0)^2+(j-b0)^2);ifdistance<=dh=0;elseh=1;end;s(i,j)=(p+q*h)*s(i,j);end;end;s=uint8(real(ifft2(ifftshift(s))));subplot(222),imshow(s);title('高通滤波所得图像');I=imread('');[f1,f2]=freqspace(size(I),'meshgrid');Hd=ones(size(I));r=sqrt(f1.^2+f2.^2);Hd(r<=0;figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');%画三维曲面(色)图2.1.2理想高通滤波器实践结果截图:2.2.1Butterworth高通滤波器实践代码:I1=imread('');subplot(121),imshow(I1);title('原始图像');f=double(I1);g=fft2(f);g=fftshift(g);[N1,N2]=size(g);n=2;d0=5;n1=fix(N1/2);n2=fix(N2/2);fori=1:N1forj=1:N2d=sqrt((i-n1)^2+(j-n2)^2);ifd==0h=0;elseh=1/(1+(d0/d)^(2*n));endresult(i,j)=h*g(i,j);endendresult=ifftshift(result);X2=ifft2(result);X3=uint8(real(X2));subplot(122),imshow(X3);title('Butterworth高通滤波');I1=imread('');[f1,f2]=freqspace(size(I1),'meshgrid');D=;r=f1.^2+f2.^2;n=4;fori=1:size(I1,1)forj=1:size(I1,2)t=(D*D)/r(i,j);Hd(i,j)=1/(t^n+1);endendfiguresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');%画三维曲面(色)图2.2.2Butterworth高通滤波器实践结果截图:2.3.1高斯高通滤波器实践代码:clearallIA=imread('');[f1,f2]=freqspace(size(IA),'meshgrid');%D=100/size(IA,1);D=;r=f1.^2+f2.^2;fori=1:size(IA,1)forj=1:size(IA,2)t=r(i,j)/(D*D);Hd(i,j)=1-exp(-t);endendY=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya));figuresubplot(2,2,1),imshow(uint8(IA));title('原始图像');subplot(2,2,2),imshow(uint8(Ia));title('高斯高通滤波');figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');2.3.2高斯高通滤波器实践结果截图:。
MA TLAB模拟高通滤波器最简洁实现与性能测试%Butterworth 模拟低通滤波器原型n=0:0.01:2; %设定频率点for ii=1:4 %产生高阶和低阶的曲线switch iicase 1,N=2;case 2,N=5;case 3,N=10;case 4,N=30;end[z,p,k]=buttap(N); %调用Butterworth模拟低通滤波器原型函数[b,a]=zp2tf(z,p,k); %转换为传递函数形式[H,w]=freqs(b,a,n); %按n指定的频率点给出频率响应magH2=(abs(H)).^2;subplot(2,1,1);hold on;plot(w,magH2);endxlabel('w/wc');ylabel('|H(jw)|^2');title("Butterworth 模拟低通滤波器原型");text(1.5,0.18,'n=2') %队以不同曲线做标记text(1.3,0.08,'n=5')text(1.16,0.08,'n=10')text(0.93,0.98,'n=30')grid on;%模拟高通滤波器设计m=0:1:5000;for ii=1:4switch iicase 1,N=2;case 2,N=5;case 3,N=10;case 4,N=30;end[z,p,k]=buttap(N);[b,a]=zp2tf(z,p,k);[bt,at]=lp2hp(b,a,200*2*pi);%又低通原型滤波器转换为200HZ的高通滤波器[Ht,w]=freqs(bt,at,m);subplot(2,1,2)hold on;plot(w,abs(Ht));endxlabel('w/pi');ylabel('|H(jw)|'2');tile('模拟高通滤波器');text(200,0.28,'n=2')text(600,0.12,'n=4')text(1000,0.28,'n=10')text(1200,0.10,'n=30')grid on;%模拟高通滤波器性能pha=angle(Ht); %输出系统的相频特性figuresubplot(2,1,1);plot(w,20*log10(pha));grid;xlabel('w/wc');ylabel('相位/dB');title('模拟高通滤波器相频特性');mag=abs(Ht); %输出系统相频的幅频特性subplot(2,1,2);plot(w,20*log10(mag));grid;xlabel('w/wc');ylabel('幅度/dB');title('模拟高通滤波器幅频特性')%运行说明:产生低通滤波器的程序和产生高通滤波器的程序单独运行,产生相频特性和幅频特性的程序可以一起运行。
%高斯低通滤波器RGB=imread('132.jpg');I0=rgb2gray(RGB);subplot(2,3,1),imshow(I0);title('原图');I1=imnoise(I0,'gaussian');%对原图像加噪声subplot(2,3,2),imshow(I1);title('加入噪声后')%将灰度图像的二维不连续Fourier变换的零频率成分移到频谱的中心s=fftshift(fft2(I1));subplot(2,3,3),imshow(log(1+abs(s)),[]);title('fftshift'); [M,N]=size(s);%分别返回s的行数到M中,列数到N中%GLPF滤波d0=50;%初始化d0n1=floor(M/2);%对M/2进行取整n2=floor(N/2);%对N/2进行取整for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);%点(i,j)到傅立叶变换中心的距离h(i,j)=1*exp(-1/2*(d^2/d0^2));%GLPF滤波函数s(i,j)=h(i,j)*s(i,j);%GLPF滤波后的频域表示endends=ifftshift(s);%对s进行反FFT移动%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数s=uint8(real(ifft2(s)));subplot(2,3,4),imshow(h);title('传递函数');%显示GHPF滤波器的传递函数subplot(2,3,5),imshow(s);title('GLPF滤波(d0=50)');%显示GLPF滤波处理后的图像。
数字图像处理三级项目—高通、低通、带通滤波器摘要在图像处理的过程中,消除图像的噪声干扰是一个非常重要的问题。
利用matlab软件,采用频域滤波的方式,对图像进行低通和高通滤波处理。
低通滤波是要保留图像中的低频分量而除去高频分量,由于图像中的边缘和噪声都对应图像傅里叶频谱中的高频部分,所以低通滤波可以除去或消弱噪声的影响并模糊边缘轮廓;高通滤波是要保留图像中的高频分量而除去低频分量,所以高通滤波可以保留较多的边缘轮廓信息。
低通滤波器有巴特沃斯滤波器和高斯滤波器等等,本次设计使用的低通滤波器为****。
高通滤波器有巴特沃斯滤波器、高斯滤波器、Laplacian高通滤波器以及Unmask高通滤波器等等,本次设计使用巴特沃斯高通滤波器。
1、频域低通滤波器:设计低通滤波器包括 butterworth and Gaussian (选择合适的半径,计算功率谱比),平滑测试图像test1和2。
实验原理分析根据卷积定理,两个空间函数的卷积可以通过计算两个傅立叶变换函数的乘积的逆变换得到,如果f(x, y)和h(x, y)分别代表图像与空间滤波器,F(u, v)和H(u, v)分别为响应的傅立叶变换(H(u, v)又称为传递函数),那么我们可以利用卷积定理来进行频域滤波。
在频域空间,图像的信息表现为不同频率分量的组合。
如果能让某个范围内的分量或某些频率的分量受到抑制,而让其他分量不受影响,就可以改变输出图的频率分布,达到不同的增强目的。
频域空间的增强方法的步骤:(1)将图像从图像空间转换到频域空间;(2)在频域空间对图像进行增强;(3)将增强后的图像再从频域空间转换到图像空间。
低通滤波是要保留图像中的低频分量而除去高频分量。
图像中的边缘和噪声都对应图像傅里叶频谱中的高频部分,所以低通滤波可以除去或消弱噪声的影响并模糊边缘轮廓。
理想低通滤波器具有传递函数:其中D0为制定的非负数,D(u,v)为点(u,v)到滤波器中心的距离。
数字信号处理:已知通带截止频率fp=5kHz,通带最大衰减ap=2dB,阻带截止频率fs=2kHz,阻带最小衰减as=30dB,按照以上技术指标设计巴特沃斯低通滤波器:wp=2*pi*5000;ws=2*pi*12000;Rp=2;As=30;[N,wc]=buttord(wp,ws,Rp,As,'s');[B,A]=butter(N,wc,'s');k=0:511;fk=0:14000/512:14000;wk=2*pi*fk;Hk=freqs(B,A,wk);subplot(2,2,1);plot(fk/1000,20*log10(abs(Hk)));grid onxlabel('频率(kHz)');ylabel('幅度(dB)')axis([0,14,-40,5])切比雪夫1型低通滤波器:wp=2*pi*3000;ws=2*pi*12000;Rp=0.1;As=60;[N1,wpl]=cheb1ord(wp,ws,Rp,As,'s');%cheb1ord,里面的是1,不是L[B1,A1]=cheby1(N1,Rp,wpl,'s');subplot(2,2,1);fk=0:12000/512:12000;wk=2*pi*fk;Hk=freqs(B1,A1,wk);plot(fk/1000,20*log10(abs(Hk)));grid onxlabel('频率(kHz)');ylabel('幅度(dB)')axis([0,12,-70,5])椭圆模拟低通滤波器:wp=2*pi*3000;ws=2*pi*12000;Rp=0.1;As=60;[N,wpo]=ellipord(wp,ws,Rp,As,'s');[B,A]=ellip(N,Rp,As,wpo,'s');subplot(2,2,1);fk=0:12000/512:12000;wk=2*pi*fk;Hk=freqs(B1,A1,wk);plot(fk/1000,20*log10(abs(Hk)));grid onxlabel('频率(kHz)');ylabel('幅度(dB)')axis([0,12,-70,5])p195-14wp=2*4/80;ws=2*20/80;rp=0.5;rs=45;[N,wc]=buttord(wp,ws,rp,rs);[B,A]=butter(N,wc);[hk,wk]=freqz(B,A);fk=wk/pi*40;plot(fk,20*log10(abs(hk)));axis([0,30,-100,0])xlabel('频率(kHZ)');ylabel('幅度(db)');grid on P195-16wp=2*325/2500;ws=2*225/2500;rp=1;rs=40;[N,wc]=ellipord(wp,ws,rp,rs);[B,A]=ellip(N,rp,rs,wc);[hk,wk]=freqz(B,A);fk=wk/pi*40;plot(fk,20*log10(abs(hk)));axis([0,30,-100,0])xlabel('频率(kHZ)');ylabel('幅度(db)');grid onP195-15wp=2*4/80;ws=2*20/80;rp=0.5;rs=45;[N,wc]=cheb1ord(wp,ws,rp,rs);[B,A]=cheby1(N,rp,wc);[hk,wk]=freqz(B,A);fk=wk/pi*40;plot(fk,20*log10(abs(hk)));axis([0,30,-100,0])xlabel('频率(kHZ)');ylabel('幅度(db)');grid on 切比雪夫低通滤波器wp=2*pi*3000;ws=2*pi*12000;rp=0.1;as=60;[N1,wp1]=cheb1ord(wp,ws,rp,as,'s');[B1,A1]=cheby1(N1,rp,wp1,'s');subplot(2,2,1);fk=0:12000/512:12000;wk=2*pi*fk;hk=freqs(B1,A1,wk);plot(fk/1000,20*log10(abs(hk)));grid onxlabel('频率(kHZ)');ylabel('幅度(db)');axis([0,12,-70,5])双音频检测audiofile='test.wav'[in_audio,fs,bits]=wavread(audiofile); [b,a]=cheby1(5,0.1,0.3);out_audio=filter(b,a,in_audio);sound(out_audio,fs,bits);wavwrite(out_audio,fs,bits,'test_out'); xk1=fft(in_audio,512);xk2=fft(out_audio,512);subplot(2,1,1);stem(abs(xk1));subplot(2,1,2);stem(abs(xk2));巴特沃斯模拟高通滤波器。
汉明窗的FIR低通滤波:Fs=22050;[x,FS,bits]=wavread('G:\Users\DP\Desktop\SoundTest.wav');%G:\Users\DP\Desktop \SoundTest.wav G:\Users\DP\Desktop\好铃网-湖人掘金宣传片.wavx=x(:,1);figure(1);subplot(2,1,1);plot(x);%sound(x,FS,bits); %回放语音title('语音信号时域波形图')y=fft(x,3260);f=(FS/3260)*[1:1630];subplot(2,1,2);plot(f(1:1630),abs(y(1:1630)));title('语音信号频谱图');%产生噪声信号并加到语音信号t=0:length(x)-1;zs0=0.05*cos(2*pi*100*t/22050);figure(2);subplot(2,1,1)plot(zs0)title('噪声信号波形');zs1=fft(zs0,1200);%sound(zs0,FS,bits);%回放噪音f=(FS/1200)*[1:600];subplot(2,1,2)plot(f(1:600),abs(zs1(1:600)));title('噪声信号频谱');%sound(x1,FS,bits); %回放加入噪声后的语音y1=fft(x1,1200);figure(3);subplot(2,1,1);plot(x1);f=(FS/1200)*[1:600];subplot(2,1,2);plot(f(1:600),abs(y1(1:600)));title('加入噪声后的信号波形');title('加入噪声后的信号频谱');%加窗滤波wp=0.25*pi;ws=0.3*pi;wdelta=ws-wp;N=ceil(6.6*pi/wdelta); %取整t=0:(size(x1)-1);wn=(0.2+0.3)*pi/2;b=fir1(N,wn/pi,hamming(N+1)); %选择窗函数,并归一化截止频率f1=fftfilt(b,x1);figure(4)freqz(b,1,512)[h1,w1]=freqz(b,1);plot(w1*FS/(2*pi),20*log10(abs(h1)));figure(5)subplot(2,1,1)plot(t,x1)title('滤波前的时域波形');subplot(2,1,2)title('滤波后的时域波形');sound(f1); %播放滤波后的语音信号F0=fft(f1,1024);f=FS*(0:511)/1024;figure(6)y2=fft(x1,1024);subplot(2,1,1);plot(f,abs(y2(1:512))); %画出滤波前的频谱图title('滤波前的频谱')xlabel('Hz');ylabel('fuzhi');subplot(2,1,2)F1=plot(f,abs(F0(1:512))); %画出滤波后的频谱图title('滤波后的频谱')xlabel('Hz');ylabel('fuzhi');巴特沃兹低通滤波器:Fs=22050;[x,FS,bits]=wavread('G:\Users\DP\Desktop\SoundTest.wav');%G:\Users\DP\Desktop \SoundTest.wav G:\Users\DP\Desktop\好铃网-湖人掘金宣传片.wavx=x(:,1);figure(1);subplot(2,1,1);plot(x);%sound(x,FS,bits); %回放语音title('语音信号时域波形图')y=fft(x,3260);f=(FS/1630)*[1:1630];subplot(2,1,2);plot(f(1:1630),abs(y(1:1630)));title('语音信号频谱图');%产生噪声信号并加到语音信号t=0:length(x)-1;zs=0.05*cos(2*pi*10000*t/22050);zs0=0.05*cos(2*pi*10000*t/22050000); figure(2);subplot(2,1,1)plot(zs0)title('噪声信号波形');zs1=fft(zs,1200);%sound(zs,FS,bits); %回放噪音subplot(2,1,2)plot(f(1:600),abs(zs1(1:600)));title('噪声信号频谱');x1=x+zs';sound(x1,FS,bits); %回放加入噪声后的语音y1=fft(x1,1200);figure(3);subplot(2,1,1);plot(x1);title('加入噪声后的信号波形');subplot(2,1,2);plot(f(1:600),abs(y1(1:600)));title('加入噪声后的信号频谱');%低通滤波fp=3000;fs=3500;Fs=22050;rp=1;rs=10;wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;Fs1=1;wap=2*tan(wp/2);was=2*tan(ws/2);[N,wc]=buttord(wap,was,rp,rs,'s');[B,A]=butter(N,wc,'s');[Bz,Az]=bilinear(B,A,Fs1);figure(4);[h,w]=freqz(Bz,Az,512,Fs1*22050);plot(w,abs(h));title('巴特沃斯低通滤波器');xlabel('频率(HZ)');ylabel('耗损(dB)');grid on;yd=filter(Bz,Az,x1);figure(5);subplot(2,1,1);plot(yd); title('滤波后信号波形');ydd=fft(yd,1200);subplot(2,1,2);plot(f(1:600),abs(ydd(1:600)));title('滤波后信号频谱');%sound(yd,FS,bits);巴特沃兹高通滤波器:Fs=22050;[x,FS,bits]=wavread('G:\Users\DP\Desktop\SoundTest.wav'); x=x(:,1);figure(1);subplot(2,1,1);plot(x);%sound(x,FS,bits); %回放语音title('语音信号时域波形图')y=fft(x,3260);f=(FS/1630)*[1:1630];subplot(2,1,2);plot(f(1:1630),abs(y(1:1630)));title('语音信号频谱图');%产生噪声信号并加到语音信号t=0:length(x)-1;zs0=0.25*cos(2*pi*100*t/22050);figure(2);subplot(2,1,1)plot(zs0)title('噪声信号波形');zs1=fft(zs0,1200);%sound(zs0,FS,bits); %回放噪音subplot(2,1,2)plot(f(1:600),abs(zs1(1:600)));title('噪声信号频谱');x1=x+zs0';%sound(x1,FS,bits); %回放加入噪声后的语音y1=fft(x1,1200);figure(3);subplot(2,1,1);plot(x1);title('加入噪声后的信号波形');subplot(2,1,2);plot(f(1:600),abs(y1(1:600)));title('加入噪声后的信号频谱');%高通滤波fp=400;fs=300;Fs=22050;rp=1;rs=10;wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;T=1;Fs1=1;wap=2*tan(wp/2);was=2*tan(ws/2);[N,wc]=buttord(wap,was,rp,rs,'s');[B,A]=butter(N,wc,'high','s');[Bz,Az]=bilinear(B,A,Fs1);figure(4);[h,w]=freqz(Bz,Az,512,Fs1*22050);plot(w,abs(h));title('巴特沃斯高通滤波器');xlabel('频率(HZ)');ylabel('耗损(dB)');grid on;yd=filter(Bz,Az,x1);figure(5);subplot(2,1,1);plot(yd); title('滤波后信号波形');ydd=fft(yd,1200);subplot(2,1,2);plot(f(1:600),abs(ydd(1:600)));title('滤波后信号频谱');%sound(yd,FS,bits)巴特沃兹带通滤波器:Fs=22050;[x,FS,bits]=wavread('G:\Users\DP\Desktop\SoundTest.wav');x=x(:,1);figure(1);subplot(2,1,1);plot(x);%sound(x,FS,bits); %回放语音title('语音信号时域波形图')y=fft(x,3260);f=(FS/1630)*[1:1630];subplot(2,1,2);plot(f(1:1630),abs(y(1:1630)));title('语音信号频谱图');%产生噪声信号并加到语音信号t=0:length(x)-1;zs0=0.05*cos(2*pi*100*t/22050);figure(2);subplot(2,1,1)plot(zs0)title('噪声信号波形');zs1=fft(zs0,1200);%sound(zs,FS,bits); %回放噪音subplot(2,1,2)plot(f(1:600),abs(zs1(1:600)));title('噪声信号频谱');x1=x+zs0';%sound(x1,FS,bits); %回放加入噪声后的语音y1=fft(x1,1200);figure(3);subplot(2,1,1);plot(x1);title('加入噪声后的信号波形');subplot(2,1,2);plot(f(1:600),abs(y1(1:600)));title('加入噪声后的信号频谱');%带通滤波fp=[800,9000];fs=[700,10000];Fs=22050;rp=1;rs=10;wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;T=1;Fs1=1;wap=2*tan(wp/2);was=2*tan(ws/2);[N,wc]=buttord(wap,was,rp,rs,'s');[B,A]=butter(N,wc,'s');[Bz,Az]=bilinear(B,A,Fs1);figure(4);[h,w]=freqz(Bz,Az,512,Fs1*22050);plot(w,abs(h));title('巴特沃斯带通滤波器');xlabel('频率(HZ)');ylabel('耗损(dB)'); grid on;yd=filter(Bz,Az,x1);figure(5);subplot(2,1,1);plot(yd);ydd=fft(yd,1200);subplot(2,1,2);plot(f(1:600),abs(ydd(1:600))); %sound(yd,FS,bits)Blackman加窗高通滤波器:Fs=22050;[x,FS,bits]=wavread('G:\Users\DP\Desktop\SoundTest.wav'); x=x(:,1);figure(1);subplot(2,1,1);plot(x);%sound(x,FS,bits); %回放语音title('语音信号时域波形图')y=fft(x,3260);f=(FS/1630)*[1:1630];subplot(2,1,2);plot(f(1:1630),abs(y(1:1630)));title('语音信号频谱图');%产生噪声信号并加到语音信号%产生噪声信号并加到语音信号t=0:length(x)-1;zs0=0.05*cos(2*pi*100*t/22050);figure(2);subplot(2,1,1)plot(zs0)title('噪声信号波形');zs1=fft(zs0,1200);%sound(zs,FS,bits); %回放噪音subplot(2,1,2)plot(f(1:600),abs(zs1(1:600)));title('噪声信号频谱');x1=x+zs0';%sound(x1,FS,bits); %回放加入噪声后的语音y1=fft(x1,1200);figure(3);subplot(2,1,1);plot(x1);title('加入噪声后的信号波形'); subplot(2,1,2);plot(f(1:600),abs(y1(1:600)));title('加入噪声后的信号频谱');%高通加窗滤波fp=600,fc=400;wp=2*pi*fp/FS;ws=2*pi*fc/FS;Bt=wp-ws;N0=ceil(11*pi/Bt);N=N0+mod(N0+1,2);wc=(wp+ws)/2/pi;hn=fir1(N-1,wc,'high',blackman(N)); X=conv(hn,x);%sound(X,FS,bits);X1=fft(X,1200);figure(4);subplot(211);plot(X);title('滤波后的信号波形');subplot(212);plot(f(1:600),abs(X1(1:600)));title('滤波后的信号频谱')。
%写上标题%设计低通滤波器:[N,Wc]=buttord()%估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wc[a,b]=butter(N,Wc); %设计Butterworth低通滤波器[h,f]=freqz(); %求数字低通滤波器的频率响应figure(2); % 打开窗口2subplot(221); %图形显示分割窗口plot(f,abs(h)); %绘制Butterworth低通滤波器的幅频响应图title(巴氏低通滤波器'');grid; %绘制带网格的图像sf=filter(a,b,s); %叠加函数S经过低通滤波器以后的新函数subplot(222);plot(t,sf); %绘制叠加函数S经过低通滤波器以后的时域图形xlabel('时间(seconds)');ylabel('时间按幅度');SF=fft(sf,256); %对叠加函数S经过低通滤波器以后的新函数进行256点的基—2快速傅立叶变换w= %新信号角频率subplot(223);plot()); %绘制叠加函数S经过低通滤波器以后的频谱图title('低通滤波后的频谱图');%设计高通滤波器[N,Wc]=buttord()%估算得到Butterworth高通滤波器的最小阶数N和3dB截止频率Wc[a,b]=butter(N,Wc,'high'); %设计Butterworth高通滤波器[h,f]=freqz(); %求数字高通滤波器的频率响应figure(3);subplot(221);plot(f,abs(h)); %绘制Butterworth高通滤波器的幅频响应图title('巴氏高通滤波器');grid; %绘制带网格的图像sf=filter(); %叠加函数S经过高通滤波器以后的新函数subplot(222);plot(t,sf); ;%绘制叠加函数S经过高通滤波器以后的时域图形xlabel('Time(seconds)');ylabel('Time waveform');w; %新信号角频率subplot(223);plot()); %绘制叠加函数S经过高通滤波器以后的频谱图title('高通滤波后的频谱图');%设计带通滤波器[N,Wc]=buttord([)%估算得到Butterworth带通滤波器的最小阶数N和3dB截止频率Wc[a,b]=butter(N,Wc); %设计Butterworth带通滤波器[h,f]=freqz(); %求数字带通滤波器的频率响应figure(4);subplot(221);plot(f,abs(h)); %绘制Butterworth带通滤波器的幅频响应图title('butter bandpass filter');grid; %绘制带网格的图像sf=filter(a,b,s); %叠加函数S经过带通滤波器以后的新函数subplot(222);plot(t,sf); %绘制叠加函数S经过带通滤波器以后的时域图形xlabel('Time(seconds)');ylabel('Time waveform');SF=fft(); %对叠加函数S经过带通滤波器以后的新函数进行256点的基—2快速傅立叶变换w=( %新信号角频率subplot(223);plot(')); %绘制叠加函数S经过带通滤波器以后的频谱图title('带通滤波后的频谱图');实例应用:matlab设计的带通滤波器方法改变参数就行了cheb1% wp1=0.45*pi;wp2=0.65*pi;ws1=0.3*pi;ws2=0.75*pi;Rp=1;Rs=40% =============双线型变换法=========================================wp1=0.45*pi; wp2=0.65*pi;ws1=0.3*pi; ws2=0.75*pi;Rp=1; Rs=40;Wp1=tan(wp1/2); Wp2=tan(wp2/2);Ws1=tan(ws1/2); Ws2=tan(ws2/2);BW=Wp2-Wp1; W0=Wp1*Wp2; W00=sqrt(W0);WP=1; WS=WP*(W0^2-Ws1^2)/(Ws1*BW);[N,Wn]=cheb1ord(WP,WS,Rp,Rs,'s');[B,A]=cheby1(N,Rp,Wn,'s');[BT,A T]=lp2bp(B,A,W00,BW);[num,den]=bilinear(BT,A T,0.5);[h,omega]=freqz(num,den,64);subplot(2,2,1);stem(omega/pi,abs(h));xlabel('\omega/\pi');ylabel('|H(z)|');subplot(2,2,2);stem(omega/pi,20*log10(abs(h)));xlabel('\omega/\pi');ylabel('增益.dB');%=============双线性变化法2=================================ws=0.6*pi;Ap=1;As=25;wp=0.4*pi;T=0.001;Fs=1/T;wp=wp/T;ws=ws/T;N=buttord(wp,ws,Ap,As,'s');fprintf('\nN=%d\n',N);wc=wp/((10^(0.1*Ap)-1)^(1/2/N));fprintf('\nwc=%.4e\n',wc);[numa,dena]=butter(N,wc,'s');fprintf('\n');disp('A numerator polynomial');fprintf('%.4e\n',numa);fprintf('\n');disp('A Denominator polynomial');fprintf('%.4e\n',dena);[numd,dend]=bilinear(numa,dena,Fs);w=linspace(0,pi,512);h=freqz(numd,dend,w);norm=max(abs(h));numd1=abs(h)/norm;plot(w/pi,20*log10(numd1));grid;%xlable('Normalized frequency');%ylable('Gain,dB');fprintf('\n');disp('D numerator polynomial');fprintf('%.4e\n',numd);fprintf('\n');disp('D numerator polynomial');fprintf('%.4e\n',dend);% =============直接法================================= wp1=0.45*pi; wp2=0.65*pi;ws1=0.3*pi; ws2=0.75*pi;Rp=1; Rs=40;Wp=[wp1/pi,wp2/pi]; Ws=[ws1/pi,ws2/pi];[N,Wn]=cheb1ord(Wp,Ws,Rp,Rs);[B,A]=cheby1(N,Rp,Wn);[h,omega]=freqz(B,A,64);subplot(2,2,3);stem(omega/pi,abs(h));xlabel('\omega/\pi');ylabel('|H(z)|');subplot(2,2,4);stem(omega/pi,20*log10(abs(h)));xlabel('\omega/\pi');ylabel('增益.dB');%cheby2%% wp1=0.45*pi;wp2=0.65*pi;ws1=0.3*pi;ws2=0.75*pi;Rp=1;Rs=40% =============脉冲响应不变法的程序================================= wp=0.4*pi;ws=0.6*pi;Ap=1;As=25;wp=0.4*pi;T=0.001;Fs=1/T;wp=wp/T;ws=ws/T;N=buttord(wp,ws,Ap,As,'s');fprintf('\nN=%d\n',N);wc=wp/((10^(0.1*Ap)-1)^(1/2/N));fprintf('\nwc=%.4e\n',wc);[numa,dena]=butter(N,wc,'s');fprintf('\n');disp('A numerator polynomial');fprintf('%.4e\n',numa);fprintf('\n');disp('A Denominator polynomial');fprintf('%.4e\n',dena);[numd,dend]=impinvar(numa,dena,Fs);w=linspace(0,pi,512);h=freqz(numd,dend,w);norm=max(abs(h));numd1=abs(h)/norm;plot(w/pi,-20*log10(numd1));grid;%xlable('Normalized frequency');%ylable('Gain,dB');fprintf('\n');disp('D numerator polynomial');fprintf('%.4e\n',numd);fprintf('\n');disp('D numerator polynomial');fprintf('%.4e\n',dend);各种滤波器形式的MATLAB参考程序和仿真内容%*******************************************************************%%mode: 1--巴特沃斯低通;2--巴特沃斯高通;3--巴特沃斯带通;4--巴特沃斯带阻% 5--契比雪夫低通;6--契比雪夫高通;7--契比雪夫带通;8--契比雪夫带阻%fp1,fp2:通带截止频率,当高通或低通时只有fp1有效%fs1, fs2:阻带截止频率,当高通或低通时只有fs1有效%rp: 通带波纹系数%as: 阻带衰减系数%sample: 采样率%h: 返回设计好的滤波器系数%*******************************************************************% function[b,a]=iirfilt(mode,fp1,fp2,fs1,fs2,rp,as,sample)wp1=2*fp1/sample;wp2=2*fp2/sample;ws1=2*fs1/sample;ws2=2*fs2/sample;%得到巴特沃斯滤波器的最小阶数N和3bd频率wnif mode<3[N,wn]=buttord(wp1,ws1,rp,as);elseif mode<5[N,wn]=buttord([wp1 wp2],[ws1 ws2],rp,as);%得到契比雪夫滤波器的最小阶数N和3bd频率wnelseif mode<7[N,wn]=cheb1ord(wp1,ws1,rp,as);else[N,wn]=cheblord([wp1 wp2],[ws1 ws2],rp,as);end%得到滤波器系数的分子b和分母aif mode= =1[b,a]=butter(N,wn);endif mode= =2[b,a]=butter(N,wn,/high/);endif mode= =3[b,a]=butter(N,wn);endif mode= =4[b,a]=butter(N,wn,/stop/);endif mode= =5[b,a]=cheby1(N,rp,wn);endif mode= =6[b,a]=cheby1(N,rp,wn,/high/);endif mode= =7[b,a]=cheby1(N,rp,wn);endif mode= =8[b,a]=cheby1(N,rp,wn,/stop/);endset(gcf,/menubar/,menubar);freq_response=freqz(b,a);magnitude=20*log10(abs(freq_response));m=0:511;f=m*sample/(2*511);subplot(3,1,1);plot(f,magnitude);grid; %幅频特性axis([0 sample/2 1.1*min(magnitude) 1.1*max(magnitude)]); ylabel('Magnitude');xlabel('Frequency-->');phase=angle(freq_response);subplot(3,1,2);plot(f,phase);grid; %相频特性axis([0 sample/2 1.1*min(phase) 1.1*max(phase)]);ylabel('Phase');xlabel('Frequency-->');h=impz(b,a,32); %32点的单位函数响应t=1:32;subplot(3,1,3);stem(t,h);grid;axis([0 32 1.2*min(h) 1.1*max(h)]);ylabel('h(n)');xlabel('n-->');。
%高斯低通滤波器
RGB=imread('132.jpg');
I0=rgb2gray(RGB);
subplot(2,3,1),imshow(I0);title('原图');
I1=imnoise(I0,'gaussian');%对原图像加噪声
subplot(2,3,2),imshow(I1);title('加入噪声后')
%将灰度图像的二维不连续Fourier变换的零频率成分移到频谱的中心
s=fftshift(fft2(I1));
subplot(2,3,3),imshow(log(1+abs(s)),[]);title('fftshift'); [M,N]=size(s);%分别返回s的行数到M中,列数到N中
%GLPF滤波
d0=50;%初始化d0
n1=floor(M/2);%对M/2进行取整
n2=floor(N/2);%对N/2进行取整
for i=1:M
for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2);%点(i,j)到傅立叶变换中心的距离
h(i,j)=1*exp(-1/2*(d^2/d0^2));%GLPF滤波函数
s(i,j)=h(i,j)*s(i,j);%GLPF滤波后的频域表示
end
end
s=ifftshift(s);%对s进行反FFT移动
%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数
s=uint8(real(ifft2(s)));
subplot(2,3,4),imshow(h);title('传递函数');%显示GHPF滤波器的传递函数
subplot(2,3,5),imshow(s);title('GLPF滤波(d0=50)');%显示GLPF滤波处理后的图像。