clear;clc;close all; fc=1000; ap=1;as=30;fp=200;fs=400; wp=2*pi*fp/fc; ws=2*pi*fs/fc; wanp=wp*fc; wans=ws*fc; [N,Wanc]=buttord(wanp,wans,ap,as,'s'); [b,a]=butter(N,Wanc,'s'); [B1,A1]=impinvar(b,a,fc) [H1,w]=freqz(B1,A1,'whole'); subplot(2,1,1); plot(w*fc/2/pi,20*log10(abs(H1)));grid on; axis([0,1000,-40,0]);ylabel('H1幅值dB'); title('冲激响应'); anp=2*fc*tan(wp/2); ans=2*fc*tan(ws/2); [N,anc]=buttord(anp,ans,ap,as,'s'); [b,a]=butter(N,anc,'s'); [B2,A2]=bilinear(b,a,fc) [H2,w]=freqz(B2,A2,'whole'); subplot(2,1,2);plot(w*fc/2/pi,20*log10(abs(H2))); axis([0,1000,-100,0]);grid on; xlabel('频率');ylabel('幅值'); title('双线性变换');将低通变为高通
时间: 2023-12-06 16:39:57 浏览: 82
ga_main_gamain_tic函数_遗传算法源码_AllClear_
为了将低通变为高通,我们需要对原始的巴特沃斯滤波器进行频率变换。具体来说,我们可以通过以下步骤来实现:
1. 将原始的巴特沃斯滤波器从低通变为带阻滤波器,也就是将通带从0~fp变为(fp,fs)。
2. 对带阻滤波器进行频率变换,将带通中心频率fp变为(fs+fp)/2,得到一个带通滤波器。
3. 对带通滤波器进行频率变换,将带通中心频率(fs+fp)/2变为fs,得到一个高通滤波器。
具体的MATLAB代码如下:
clear;clc;close all;
fc=1000; ap=1;as=30;fp=200;fs=400;
wp=2*pi*fp/fc; ws=2*pi*fs/fc;
wanp=wp*fc; wans=ws*fc;
% 将原始的巴特沃斯滤波器从低通变为带阻滤波器
[N,Wanc]=buttord(wanp,wans,ap,as,'s');
[b,a]=butter(N,Wanc,'s');
% 进行第一次频率变换,将带通中心频率fp变为(fs+fp)/2
fp2=(fs+fp)/2;
wp2=2*pi*fp2/fc;
Wp2=wp2*fc;
[B1,A1]=lp2bp(b,a,wp2);
% 进行第二次频率变换,将带通中心频率(fs+fp)/2变为fs
fs2=fs;
ws2=2*pi*fs2/fc;
Ws2=ws2*fc;
[B2,A2]=bilinear(B1,A1,fs2/fc);
% 求取频率响应并画图
[H2,w]=freqz(B2,A2,'whole');
figure;
plot(w*fc/2/pi,20*log10(abs(H2)));
axis([0,1000,-40,0]);grid on;
xlabel('频率');
ylabel('H2幅值dB');
title('高通滤波器');
阅读全文