Matlab初始滤波器问题
发布网友
发布时间:2022-04-20 16:29
我来回答
共2个回答
热心网友
时间:2023-08-22 08:55
参数有fp,fs,Rp,As
function y = flower(x)
fp=.001; %通带截止频率 Hz
fs=.1; %阻带截止频率 Hz
Rp=1; %通带允许最大衰减 dB
As=70; %阻带允许最小衰减 dB
Fs=10000; %采样频率 Hz
wp=fp*2*pi/Fs; %转换成数字频率,并归一化
ws=fs*2*pi/Fs;
T=1/Fs; %采样间隔
[N,wc]=buttord(wp,ws,Rp,As,'s'); %求butterworth滤波器的最小阶数和3dB截止频率
if (N>=5) %阶数大于4,不易实现,停止运行
error('N>4,请重新设计参数 fp ,fs ,Rp ,As');
end
[z,p,k]=buttap(N); %求取模拟低通滤波器的原型
[bp,ap]=zp2tf(z,p,k); %将零极点增益转换为分子分母多项式系数向量形式
[bs,as]=lp2lp(bp,ap,2*Fs*tan(wc/2)); %模拟低通原型转换为实际模拟低通滤波器
[bz,az]=impinvar(bs,as,Fs); %用脉冲响应不变法将模拟低通转换为数字低通
sys=tf(bz,az,T); %求数字低通滤波器的传递函数 H(z)
[H,W]=freqz(bz,az,512); %求频率响应参数
subplot(211);
plot(Fs*W/(2*pi),abs(H)); %画出幅频特性
title('IIR数字低通滤波器幅度特性');
xlabel('频率 Hz');
ylabel('幅度 dB');
grid;
subplot(212);
plot(Fs*W/(2*pi),20*log10(abs(H))); %对幅度的衰减特性 dB
title('IIR数字低通滤波器衰减特性');
xlabel('频率 Hz');
ylabel('幅度 dB');
grid;
figure;freqz(bz,az,1024,Fs); %幅频特性与相频特性
y=filtfilt(bz,az,x);
figure;plot(y);
xlabel('数据点');
ylabel('滤波后数值');
title('巴特沃斯低通滤波器滤波图形')
热心网友
时间:2023-08-22 08:56
你要的低通滤波器是FIR还是IIR呢?给你一个我写的低通滤波器,你自己根据自己的需要改改就可以。MATLAB设计滤波器的步骤都是差不多的,主要是合理的设计你的参数,多做实验,边试边改,参数有fp,fs,Rp,As
function y = flower(x)
fp=.001; %通带截止频率 Hz
fs=.1; %阻带截止频率 Hz
Rp=1; %通带允许最大衰减 dB
As=70; %阻带允许最小衰减 dB
Fs=10000; %采样频率 Hz
wp=fp*2*pi/Fs; %转换成数字频率,并归一化
ws=fs*2*pi/Fs;
T=1/Fs; %采样间隔
[N,wc]=buttord(wp,ws,Rp,As,'s'); %求butterworth滤波器的最小阶数和3dB截止频率
if (N>=5) %阶数大于4,不易实现,停止运行
error('N>4,请重新设计参数 fp ,fs ,Rp ,As');
end
[z,p,k]=buttap(N); %求取模拟低通滤波器的原型
[bp,ap]=zp2tf(z,p,k); %将零极点增益转换为分子分母多项式系数向量形式
[bs,as]=lp2lp(bp,ap,2*Fs*tan(wc/2)); %模拟低通原型转换为实际模拟低通滤波器
[bz,az]=impinvar(bs,as,Fs); %用脉冲响应不变法将模拟低通转换为数字低通
sys=tf(bz,az,T); %求数字低通滤波器的传递函数 H(z)
[H,W]=freqz(bz,az,512); %求频率响应参数
subplot(211);
plot(Fs*W/(2*pi),abs(H)); %画出幅频特性
title('IIR数字低通滤波器幅度特性');
xlabel('频率 Hz');
ylabel('幅度 dB');
grid;
subplot(212);
plot(Fs*W/(2*pi),20*log10(abs(H))); %对幅度的衰减特性 dB
title('IIR数字低通滤波器衰减特性');
xlabel('频率 Hz');
ylabel('幅度 dB');
grid;
figure;freqz(bz,az,1024,Fs); %幅频特性与相频特性
y=filtfilt(bz,az,x);
figure;plot(y);
xlabel('数据点');
ylabel('滤波后数值');
title('巴特沃斯低通滤波器滤波图形')