Matlab 低通Butterworth滤波仿真m文件
//
clear;
P=bodeoptions;
P.Grid='on';
P.XLim={[0 800]};
P.XLimMode={'manual'};
P.FreqUnits='Hz';
P.MagUnits='abs';
P.FreqScale = 'linear';
n=2;f0=100;fs=6400;
[b,a]=butter(n,f0/(fs/2),'low')
H=tf(b,a,1/fs);
bode(H,P);grid on; %绘制滤波器伯德图
Ts=0.1; % 分析的时间
t=0:1/fs:Ts;w=100*pi*2; %w=2*pi*f0;
u=800+100*sin(3*w*t)+500*[(t>=0.05)-(t>=0.05+1/fs)]; %input signal;直流800V+100Hz纹波+冲击
for i=1:1:2
y(i)=0;
end
for i=3:1:Ts*fs+1
y(i)=-1*(a(2)*y(i-1)+a(3)*y(i-2))+b(1)*u(i)+b(2)*u(i-1)+b(3)*u(i-2);
end
%figure;plot(t,u,t,y);grid on; % 绘制滤波效果,100Hz衰减95%
figure;
plot(t,u);
grid on; % 绘制滤波效果,100Hz衰减95%
figure;
plot(t,y);
grid on; % 绘制滤波效果,100Hz衰减95%
/