📄 some filter.txt
字号:
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,AT]=lp2bp(B,A,W00,BW);
[num,den]=bilinear(BT,AT,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');
% =============直接法=================================
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
% =============双线型变换法=========================================
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]=cheb2ord(WP,WS,Rp,Rs,'s');
[B,A]=cheby2(N,Rs,Wn,'s');
[BT,AT]=lp2bp(B,A,W00,BW);
[num,den]=bilinear(BT,AT,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)));
axis([0 1 -100 0]);xlabel('\omega/\pi');ylabel('增益.dB');
% =============直接法=================================
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]=cheb2ord(Wp,Ws,Rp,Rs);
[B,A]=cheby2(N,Rs,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)));
axis([0 1 -100 0]);xlabel('\omega/\pi');ylabel('增益.dB');
%椭圆%
% 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]=ellipord(WP,WS,Rp,Rs,'s');
[B,A]=ellip(N,Rp,Rs,Wn,'s');
[BT,AT]=lp2bp(B,A,W00,BW);
[num,den]=bilinear(BT,AT,0.5);
[h,omega]=freqz(num,den,64);
subplot(2,2,1);stem(omega/pi,abs(h));grid;
xlabel('\omega/\pi');ylabel('|H(z)|');
subplot(2,2,2);stem(omega/pi,20*log10(abs(h)));grid;
xlabel('\omega/\pi');ylabel('增益.dB');
% =============直接法=================================
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]=ellipord(Wp,Ws,Rp,Rs);
[B,A]=ellip(N,Rp,Rs,Wn);
[h,omega]=freqz(B,A,64);
subplot(2,2,3);stem(omega/pi,abs(h));grid;
xlabel('\omega/\pi');ylabel('|H(z)|');
subplot(2,2,4);stem(omega/pi,20*log10(abs(h)));grid;
xlabel('\omega/\pi');ylabel('增益.dB');
参考资料:bdqi
matlab中的快速傅立叶变换函数fft - []2006-05-09居然花了两天的时间研究fft算法。绕了一大圈,发现matlab中的fft函数便能了结一切,其效果相当于几十行的C代码,足见matlab作为数学软件的异常强大。只是在用fft函数的时候,居然也花了很大的功夫去弄明白为什么对N个点的信号离散序列用fft()做计算的结果也是N个复数序列。后来才想起所谓的奈归斯特频率和采样频率的关系,也就是说,该N点复数序列只有前fix((N+1)/2)点有意义,后面的负频率在物理上毫无意义,而且这前半序列对应的是0,1,2……次谐波的极坐标表示,如c=a+bi,这就是傅立叶复指数形式表示时的常数c。
%%%%%%% 傅立叶分解程序 %%%%%%%
function [u2]= dft(u)
[m,n]=size(u);
for k=1:m
u2(k,:)=fft(u(k,:));
end
%%%%%%% 逆变换 %%%%%%%%%
function [xn,xK] = idfs(Xk,K) % xn为重建的信号,xK为k次谐波
N = length(Xk);
n = [0:1:N-1]; % row vector for n
k = [0:1:N-1]; % row vector for k
WN = exp(-j*2*pi/N); % Wn factor
nk = n'*k; % creates a N by N matrix of nk values
WNnk = WN.^(-nk); % IDFS matrix
xn = (Xk*WNnk)/N; % row vector for IDFS values
if (K>0)
xK =2* (Xk(K+1)*WNnk(:,K+1))/N;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -