Matlab下各个滤波器传递函数透视图的绘制
原文地址:http://blog.****.net/ljp1919/article/details/44781215
本文主要绘制常用滤波器的透视图,包括低通,带阻和带通滤波器。而这三类滤波器又各自包含了理想、巴特沃兹和高斯滤波器。如,低通滤波器就可以分为理想低通滤波器、n阶巴特沃兹滤波器和高斯低通滤波器。
第一:低通滤波器
1)理想低通滤波器
传递函数:
透视图结果:
代码:
- a=100;
- b=100;
- U=0:a;
- V=0:b;
- M=length(U);N=length(V);
- D0=10;%W=200;%D0是频带的中心半径;W是频带的宽度
- x1=50;y1=50;
- x0=-50;y0=-50;
- m=fix(M/2); n=fix(N/2);
- H=zeros(M,N);
- n=8;
- for u=1:M
- for v=1:N
- a=sqrt((U(u) - 50) .* (U(u)-50) + (V(v) - 50) .* (V(v) - 50));%D(u,v)的值
- if(a<=D0)%理想陷波器
- H(u,v)=1;
- else
- H(u,v)=0;
- end
- end
- end
- %在绘制高斯曲面的时候,加上下述代码,显示得美观
- figure;
- surf(U,V,H)
2)n阶巴特沃兹低通滤波器
传递函数:
透视图结果:
代码:
- a=100;
- b=100;
- U=0:a;
- V=0:b;
- M=length(U);N=length(V);
- D0=10;%W=200;%D0是频带的中心半径;W是频带的宽度
- x1=50;y1=50;
- x0=-50;y0=-50;
- m=fix(M/2); n=fix(N/2);
- H=zeros(M,N);
- n=8;
- for u=1:M
- for v=1:N
- a=sqrt((U(u) - 50) .* (U(u)-50) + (V(v) - 50) .* (V(v) - 50));%D(u,v)的值
- b=1+(a/D0)^2*n;
- H(u,v)=1/b;%尝试下,非理想滤波器,如巴特沃兹或者高斯
- end
- end
- figure;
- surf(U,V,H)
- title('n=8')
3)高斯低通滤波器
传递函数:
透视图结果:
代码:
- a=100;
- b=100;
- U=0:a;
- V=0:b;
- M=length(U);N=length(V);
- D0=10; %D0是频带的中心半径;W是频带的宽度
- x1=50;y1=50;
- x0=-50;y0=-50;
- m=fix(M/2); n=fix(N/2);
- H=zeros(M,N);
- for u=1:M
- for v=1:N
- D1=((u-m-x0)^2+(v-n-y0).^2)^0.5;
- D2=((u-m+x0)^2+(v-n+y0).^2)^0.5;
- D11=((u-m-x1)^2+(v-n-y1).^2)^0.5;
- D21=((u-m+x1)^2+(v-n+y1).^2)^0.5;
- %高斯低通曲面
- H(u,v) = (U(u) - 50) .* (U(u)-50) + (V(v) - 50) .* (V(v) - 50);
- end
- end
- %在绘制高斯曲面的时候,加上下述代码,显示得美观
- fangcha=50;
- H = -H/(2*fangcha);
- H = exp(H) / (sqrt(2*pi) * sqrt(fangcha));
- surf(U,V,H)
第二:带阻滤波器
1)理想带阻滤波器
传递函数:
透视图结果:
代码:
- % %绘制函数剖面线
- % [u,v] = meshgrid(-400:400, -400:400);
- a=100;%图像的尺寸,长
- b=100;%图像的尺寸,宽
- U=0:a;
- V=0:b;
- M=length(U);N=length(V);
- D0=30;%W=200;%D0是频带的中心半径;W是频带的宽度
- x1=50;y1=50;
- x0=-50;y0=-50;
- m=fix(M/2);n=fix(N/2);
- H=zeros(M,N);
- % n=8;
- W=10;%W是频带的宽度
- for u=1:M
- for v=1:N
- % D1=((u-m-x0)^2+(v-n-y0).^2)^0.5;
- % D2=((u-m+x0)^2+(v-n+y0).^2)^0.5;
- % D11=((u-m-x1)^2+(v-n-y1).^2)^0.5;
- % D21=((u-m+x1)^2+(v-n+y1).^2)^0.5;
- % % %设计带阻滤波器
- % H(u,v)=1-exp(-0.5*((D(u,v)^2-D0^2)/(D(u,v)*W))^2);
- D=sqrt((U(u) - m) .* (U(u)-m) + (V(v) - n) .* (V(v) - n));%D(u,v)的值
- if((D<D0-W/2) || (D>D0+W/2))%理想带阻滤波器
- H(u,v)=1;
- else
- H(u,v)=0;
- end
- % H(u,v)=1-exp(-0.5*((D1*D2/D0^2)));%尝试下,非理想滤波器,如巴特沃兹或者高斯
- % a=sqrt((U(u) - 50) .* (U(u)-50) + (V(v) - 50) .* (V(v) - 50));%D(u,v)的值
- % b=1+(a/D0)^2*n;
- % H(u,v)=1/b;%尝试下,非理想滤波器,如巴特沃兹或者高斯
- end
- end
- %在绘制高斯曲面的时候,加上下述代码,显示得美观
- % fangcha=50;
- % H = -H/(2*fangcha);
- % H = exp(H) / (sqrt(2*pi) * sqrt(fangcha));
- figure;
- surf(U,V,H)
- title('理想带阻滤波器:D0=30,W=10')
- % [X,Y] = meshgrid(-2:.2:2, -2:.2:5);
- % Z = X .* exp(-X.^2 - Y.^2);
- % surf(X,Y,Z)
2)n阶巴特沃兹带阻滤波器
传递函数:
透视图结果:
代码:
- % %绘制函数剖面线
- % [u,v] = meshgrid(-400:400, -400:400);
- a=100;%图像的尺寸,长
- b=100;%图像的尺寸,宽
- U=0:a;
- V=0:b;
- M=length(U);N=length(V);
- D0=30;%W=200;%D0是频带的中心半径;W是频带的宽度
- x1=50;y1=50;
- x0=-50;y0=-50;
- m=fix(M/2);n=fix(N/2);
- H=zeros(M,N);
- n1=1;%巴特沃兹的阶数
- W=10;%W是频带的宽度
- for u=1:M
- for v=1:N
- % D1=((u-m-x0)^2+(v-n-y0).^2)^0.5;
- % D2=((u-m+x0)^2+(v-n+y0).^2)^0.5;
- % D11=((u-m-x1)^2+(v-n-y1).^2)^0.5;
- % D21=((u-m+x1)^2+(v-n+y1).^2)^0.5;
- % % %设计带阻滤波器
- % H(u,v)=1-exp(-0.5*((D(u,v)^2-D0^2)/(D(u,v)*W))^2);
- D=sqrt((U(u) - m) .* (U(u)-m) + (V(v) - n) .* (V(v) - n));%D(u,v)的值
- % if((D<D0-W/2) || (D>D0+W/2))%理想带阻滤波器
- % H(u,v)=1;
- % else
- % H(u,v)=0;
- % end
- temp=1+(D*W/(D^2-D0^2))^2*n1;
- H(u,v)=1/temp;
- % H(u,v)=1-exp(-0.5*((D1*D2/D0^2)));%尝试下,非理想滤波器,如巴特沃兹或者高斯
- % a=sqrt((U(u) - 50) .* (U(u)-50) + (V(v) - 50) .* (V(v) - 50));%D(u,v)的值
- % b=1+(a/D0)^2*n;
- % H(u,v)=1/b;%尝试下,非理想滤波器,如巴特沃兹或者高斯
- end
- end
- %在绘制高斯曲面的时候,加上下述代码,显示得美观
- % fangcha=50;
- % H = -H/(2*fangcha);
- % H = exp(H) / (sqrt(2*pi) * sqrt(fangcha));
- figure;
- surf(U,V,H)
- title('1阶巴特沃兹带阻滤波器:D0=30,W=10')
- % [X,Y] = meshgrid(-2:.2:2, -2:.2:5);
- % Z = X .* exp(-X.^2 - Y.^2);
- % surf(X,Y,Z)
传递函数:
透视图:
代码:
- % %绘制函数剖面线
- % [u,v] = meshgrid(-400:400, -400:400);
- a=100;%图像的尺寸,长
- b=100;%图像的尺寸,宽
- U=0:a;
- V=0:b;
- M=length(U);N=length(V);
- D0=30;%W=200;%D0是频带的中心半径;W是频带的宽度
- x1=10;y1=10;
- u0=-20;v0=20;%(u0,v0)的值对应移动中心
- m=fix(M/2);n=fix(N/2);
- H=zeros(M,N);
- n1=2;%巴特沃兹的阶数
- W=10;%W是频带的宽度
- for u=1:M
- for v=1:N
- % D1=((u-m-u0)^2+(v-n-v0).^2)^0.5;%()
- % D2=((u-m+u0)^2+(v-n+v0).^2)^0.5;
- % D1=((U(u)-m-u0)^2+(V(v)-n-v0)^2)^0.5;%()
- % D2=((U(u)-m+u0)^2+(V(v)-n+v0)^2)^0.5;
- % D11=((u-m-x1)^2+(v-n-y1).^2)^0.5;
- % D21=((u-m+x1)^2+(v-n+y1).^2)^0.5;
- % % %设计带阻滤波器
- % H(u,v)=1-exp(-0.5*((D(u,v)^2-D0^2)/(D(u,v)*W))^2);
- % D=sqrt((U(u) - m) .* (U(u)-m) + (V(v) - n) .* (V(v) - n));
- D=sqrt((U(u) - m) .* (U(u)-m) + (V(v) - n) .* (V(v) - n));%D(u,v)的值
- % if((D<D0-W/2) || (D>D0+W/2))%理想带阻滤波器
- % H(u,v)=1;
- % else
- % H(u,v)=0;
- % end
- temp=-0.5*((D^2-D0^2)/(D*W))^2;
- H(u,v)=1-exp(temp);
- % H(u,v)=1-exp(-0.5*((D1*D2/D0^2)));%尝试下,非理想滤波器,如巴特沃兹或者高斯
- % a=sqrt((U(u) - 50) .* (U(u)-50) + (V(v) - 50) .* (V(v) - 50));%D(u,v)的值
- % b=1+(a/D0)^2*n;
- % H(u,v)=1/b;%尝试下,非理想滤波器,如巴特沃兹或者高斯
- end
- end
- %在绘制高斯曲面的时候,加上下述代码,显示得美观
- % fangcha=50;
- % H = -H/(2*fangcha);
- % H = exp(H) / (sqrt(2*pi) * sqrt(fangcha));
- figure;
- surf(U,V,H)
- title('高斯带阻滤波器:D0=30,W=10')
第三:陷波器
1)理想陷波器
传递函数:
透视图:
代码:
- % %绘制函数剖面线
- % [u,v] = meshgrid(-400:400, -400:400);
- a=100;%图像的尺寸,长
- b=100;%图像的尺寸,宽
- U=0:a;
- V=0:b;
- M=length(U);N=length(V);
- D0=10;%W=200;%D0是频带的中心半径;W是频带的宽度
- x1=10;y1=10;
- u0=-30;v0=30;%(u0,v0)的值对应移动中心
- m=fix(M/2);n=fix(N/2);
- H=zeros(M,N);
- n1=2;%巴特沃兹的阶数
- W=10;%W是频带的宽度
- for u=1:M
- for v=1:N
- % D1=((u-m-u0)^2+(v-n-v0).^2)^0.5;%()
- % D2=((u-m+u0)^2+(v-n+v0).^2)^0.5;
- D1=((U(u)-m-u0)^2+(V(v)-n-v0)^2)^0.5;%()
- D2=((U(u)-m+u0)^2+(V(v)-n+v0)^2)^0.5;
- % D11=((u-m-x1)^2+(v-n-y1).^2)^0.5;
- % D21=((u-m+x1)^2+(v-n+y1).^2)^0.5;
- % % %设计带阻滤波器
- % H(u,v)=1-exp(-0.5*((D(u,v)^2-D0^2)/(D(u,v)*W))^2);
- % D=sqrt((U(u) - m) .* (U(u)-m) + (V(v) - n) .* (V(v) - n));
- % D=sqrt((U(u) - m) .* (U(u)-m) + (V(v) - n) .* (V(v) - n));%D(u,v)的值
- if((D1<=D0) || (D2<=D0))%理想带阻滤波器
- H(u,v)=0;
- else
- H(u,v)=1;
- end
- % temp=-0.5*((D^2-D0^2)/(D*W))^2;
- % H(u,v)=1-exp(temp);
- % H(u,v)=1-exp(-0.5*((D1*D2/D0^2)));%尝试下,非理想滤波器,如巴特沃兹或者高斯
- % a=sqrt((U(u) - 50) .* (U(u)-50) + (V(v) - 50) .* (V(v) - 50));%D(u,v)的值
- % b=1+(a/D0)^2*n;
- % H(u,v)=1/b;%尝试下,非理想滤波器,如巴特沃兹或者高斯
- end
- end
- %在绘制高斯曲面的时候,加上下述代码,显示得美观
- % fangcha=50;
- % H = -H/(2*fangcha);
- % H = exp(H) / (sqrt(2*pi) * sqrt(fangcha));
- figure;
- surf(U,V,H)
- title('理想带阻滤波器:D0=10,u0=-30;v0=30')
- % [X,Y] = meshgrid(-2:.2:2, -2:.2:5);
- % Z = X .* exp(-X.^2 - Y.^2);
- % surf(X,Y,Z)
2)n阶巴特沃兹陷波器:
传递函数:
透视图:
代码:
- a=100;%图像的尺寸,长
- b=100;%图像的尺寸,宽
- U=0:a;
- V=0:b;
- M=length(U);N=length(V);
- D0=20;%W=200;%D0是频带的中心半径;W是频带的宽度
- x1=10;y1=10;
- u0=-30;v0=30;%(u0,v0)的值对应移动中心
- m=fix(M/2);n=fix(N/2);
- H=zeros(M,N);
- n1=2;%巴特沃兹的阶数
- W=10;%W是频带的宽度
- for u=1:M
- for v=1:N
- D1=((U(u)-m-u0)^2+(V(v)-n-v0)^2)^0.5;
- D2=((U(u)-m+u0)^2+(V(v)-n+v0)^2)^0.5;
- temp=1+(D0^2/(D1*D2))^n1;
- H(u,v)=1/temp;
- end
- end
- figure;
- surf(U,V,H)
- title('2阶巴特沃兹陷波器:D0=20,u0=-30;v0=30')
3)高斯陷波器
传递函数:
透视图:
代码:
- % %绘制函数剖面线
- % [u,v] = meshgrid(-400:400, -400:400);
- a=100;%图像的尺寸,长
- b=100;%图像的尺寸,宽
- U=0:a;
- V=0:b;
- M=length(U);N=length(V);
- D0=10;%W=200;%D0是频带的中心半径;W是频带的宽度
- x1=10;y1=10;
- u0=-20;v0=20;%(u0,v0)的值对应移动中心
- m=fix(M/2);n=fix(N/2);
- H=zeros(M,N);
- n1=2;%巴特沃兹的阶数
- W=10;%W是频带的宽度
- for u=1:M
- for v=1:N
- % D1=((u-m-u0)^2+(v-n-v0).^2)^0.5;%()
- % D2=((u-m+u0)^2+(v-n+v0).^2)^0.5;
- D1=((U(u)-m-u0)^2+(V(v)-n-v0)^2)^0.5;%()
- D2=((U(u)-m+u0)^2+(V(v)-n+v0)^2)^0.5;
- % D11=((u-m-x1)^2+(v-n-y1).^2)^0.5;
- % D21=((u-m+x1)^2+(v-n+y1).^2)^0.5;
- % % %设计带阻滤波器
- % H(u,v)=1-exp(-0.5*((D(u,v)^2-D0^2)/(D(u,v)*W))^2);
- % D=sqrt((U(u) - m) .* (U(u)-m) + (V(v) - n) .* (V(v) - n));%D(u,v)的值
- % if((D<D0-W/2) || (D>D0+W/2))%理想带阻滤波器
- % H(u,v)=1;
- % else
- % H(u,v)=0;
- % end
- temp=-0.5*(D1*D2/D0^2);
- H(u,v)=1-exp(temp);
- % H(u,v)=1-exp(-0.5*((D1*D2/D0^2)));%尝试下,非理想滤波器,如巴特沃兹或者高斯
- % a=sqrt((U(u) - 50) .* (U(u)-50) + (V(v) - 50) .* (V(v) - 50));%D(u,v)的值
- % b=1+(a/D0)^2*n;
- % H(u,v)=1/b;%尝试下,非理想滤波器,如巴特沃兹或者高斯
- end
- end
- %在绘制高斯曲面的时候,加上下述代码,显示得美观
- % fangcha=50;
- % H = -H/(2*fangcha);
- % H = exp(H) / (sqrt(2*pi) * sqrt(fangcha));
- figure;
- surf(U,V,H)
- title('高斯陷波器:D0=10,u0=-20;v0=20')
- % [X,Y] = meshgrid(-2:.2:2, -2:.2:5);
- % Z = X .* exp(-X.^2 - Y.^2);
- % surf(X,Y,Z)