大家好,又见面了,我是你们的朋友全栈君。
原始信号由5Hz,50Hz,110Hz三种频率的正弦信号构成,并含有直流分量。
原始信号为:y=sin(5*2*pi*x)+sin(50*2*pi*x)+sin(110*2*pi*x)+0.5;
使用通带为[10,100]Hz的切比雪夫滤波器,滤波后的信号时域曲线为:
对原始信号和滤波信号作傅里叶变换,观察频谱的变化(左图为原始信号频谱,有图为滤波信号频谱)。
对比图 3 可见,原始信号5Hz,110Hz的交流成分和直流成分都被滤掉了,只保留了50Hz交流成分,并且幅值吻合。
附切比雪夫II型带通滤波器程序
function [X,Y]=Chebyshev2bp(x,y,fp,fs,Rp,Rs)
% fp 通带边界频率,单位Hz
% fs 阻带边界频率,单位Hz
% Rp 通带波纹,单位分贝(通常取值为1,该值越小通带幅值越平稳,但过渡带宽也越大)
% Rs 阻带衰减,单位分贝(从30附近试取,该值越大阻带幅值越小,但过渡带宽也越大)
wp=fp*2*pi;
ws=fs*2*pi;
[N,Wn]=cheb2ord(wp,ws,Rp,Rs,’s’); % 根据滤波器要求,求得滤波器最小阶数(计算也越慢)和截止频率(万永革 例5-17)
N
%%% 关于滤波器阶数N的说明
% 理论上,滤波器阶数越高越接近理想滤波器,但滤波器阶数达到一定值后再增加阶数,其逼近程度并不再显著提高,但计算量依然增加,所以理论上不需要无穷大的阶数
% 实际编程中,随着阶数无限升高,更根本的问题是计算机积累误差凸显,将使其与理想滤波器相去甚远,最终时域幅值严重失真,所以实际应用中滤波器阶数也不是越高越好
[z,p,k]=cheb2ap(N,Rs); %设计Chebyshev II型原型低通滤波器(万永革 例5-8)
[b,a]=zp2tf(z,p,k); % 将零点极点增益形式转换为传递函数形式
Wo=sqrt(Wn(1)*Wn(2)); % 计算中心点频率(万永革 例5-14)
Bw=Wn(2)-Wn(1); % 计算频带宽度
[bt,at]=lp2bp(b,a,Wo,Bw); % 频率转换。将模拟原先低通滤波器转换为带通滤波器
H=[tf(bt,at)]; % 在MATLAB中表示此滤波器(万永革 例5-13)
[Y,X]=lsim(H,y,x);
https://www.cnblogs.com/alimy/p/9140695.html
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/136146.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...