# “一阶数字低通滤波器”原理推导（含仿真和代码实现）

3 篇文章 64 订阅

## 一、原理及公式推导

”一阶低通数字滤波器“对应的物理电路模型是”一阶RC低通滤波电路“，电路如下图所示。

U o u t = 1 j ω C R + 1 j ω C U i n = 1 1 + j ω R C U i n {U_{out}} = \frac{{\frac{1}{{j\omega C}}}}{{R + \frac{1}{{j\omega C}}}}{U_{in}} = \frac{1}{{1 + j\omega RC}}{U_{in}}

y = 1 1 + τ s f ( x ) ⇒ τ ⋅ y ′ + y = x y = \frac{1}{{1 + \tau s}}f(x) \Rightarrow \tau \cdot y' + y = x

τ ⋅ y ( k ) − y ( k − 1 ) T + y ( k ) = x ( k ) \tau \cdot \frac{{y(k) - y(k - 1)}}{T} + y(k) = x(k)

y ( k ) = ( 1 − T T + τ ) ⋅ y ( k − 1 ) + T T + τ ⋅ x ( k ) y(k) = (1 - \frac{T}{{T + \tau }}) \cdot y(k - 1) + \frac{T}{{T + \tau }} \cdot x(k)

a = T T + τ a = \frac{T}{{T + \tau }} 得到一般表达式： y ( k ) = ( 1 − a ) ⋅ y ( k − 1 ) + a ⋅ x ( k ) y(k) = (1 - a) \cdot y(k - 1) + a \cdot x(k) ，a称为滤波系数。

## 二、截止频率和参数计算

a = T T + τ = 1 1 + τ T = 1 1 + 1 T ⋅ 1 2 π f H = 1 1 + f 2 π f H a = \frac{T}{{T + \tau }} = \frac{1}{{1 + \frac{\tau }{T}}} = \frac{1}{{1 + \frac{1}{T} \cdot \frac{1}{{2\pi {f_H}}}}} = \frac{1}{{1 + \frac{f}{{2\pi {f_H}}}}}

## 四、频率选择对输出的影响（附仿真分析）

### 代码源程序：

#### 交流信号部分：



f_basic=200;%原信号频率为200Hz
w_basic=2*pi*f_basic;
f_H=1;%截止频率500Hz
f_simple=20000;%采样频率20kHz
PointNumber = 100000;%坐标点数量

x=0:1:PointNumber-1;
Standard =2+sin(w_basic*x*0.0000005);%原始标准信号
noise = 0+0.1*randn(1,PointNumber);

a=2*pi*f_H/f_simple;
y_last=0;
y_now=0;
for i = 0:1:PointNumber-1
y_now=(1-a)*y_last+a*x_now;
output(i+1)=y_now;
y_last=y_now;
end
figure(1);
X=0:1:PointNumber-1;
plot(X,Standard,'-..b');hold on;
plot(X,output,'-..r');hold on;
legend('With noise','Standard','Output')
xlabel('time');
ylabel('value');
title('一阶低通滤波器（fH=1Hz）');

f_basic=200;%原信号频率为200Hz
w_basic=2*pi*f_basic;
f_H=5;%截止频率500Hz
f_simple=20000;%采样频率20kHz
PointNumber = 100000;%坐标点数量

x=0:1:PointNumber-1;
Standard =2+sin(w_basic*x*0.0000005);%原始标准信号
noise = 0+0.1*randn(1,PointNumber);

a=2*pi*f_H/f_simple;
y_last=0;
y_now=0;
for i = 0:1:PointNumber-1
y_now=(1-a)*y_last+a*x_now;
output(i+1)=y_now;
y_last=y_now;
end
figure(2);
X=0:1:PointNumber-1;
plot(X,Standard,'-..b');hold on;
plot(X,output,'-..r');hold on;
legend('With noise','Standard','Output')
xlabel('time');
ylabel('value');
title('一阶低通滤波器（fH=5Hz）');

f_basic=200;%原信号频率为200Hz
w_basic=2*pi*f_basic;
f_H=50;%截止频率500Hz
f_simple=20000;%采样频率20kHz
PointNumber = 100000;%坐标点数量

x=0:1:PointNumber-1;
Standard =2+sin(w_basic*x*0.0000005);%原始标准信号
noise = 0+0.1*randn(1,PointNumber);

a=2*pi*f_H/f_simple;
y_last=0;
y_now=0;
for i = 0:1:PointNumber-1
y_now=(1-a)*y_last+a*x_now;
output(i+1)=y_now;
y_last=y_now;
end
figure(3);
X=0:1:PointNumber-1;
plot(X,Standard,'-..b');hold on;
plot(X,output,'-..r');hold on;
legend('With noise','Standard','Output')
xlabel('time');
ylabel('value');
title('一阶低通滤波器（fH=50Hz）');

f_basic=200;%原信号频率为200Hz
w_basic=2*pi*f_basic;
f_H=500;%截止频率500Hz
f_simple=20000;%采样频率20kHz
PointNumber = 100000;%坐标点数量

x=0:1:PointNumber-1;
Standard =2+sin(w_basic*x*0.0000005);%原始标准信号
noise = 0+0.1*randn(1,PointNumber);

a=2*pi*f_H/f_simple;
y_last=0;
y_now=0;
for i = 0:1:PointNumber-1
y_now=(1-a)*y_last+a*x_now;
output(i+1)=y_now;
y_last=y_now;
end
figure(4);
X=0:1:PointNumber-1;
plot(X,Standard,'-..b');hold on;
plot(X,output,'-..r');hold on;
legend('With noise','Standard','Output')
xlabel('time');
ylabel('value');
title('一阶低通滤波器（fH=500Hz）');


#### 直流信号部分：

f_basic=1;%原信号频率为200Hz
w_basic=2*pi*f_basic;
f_H=500;%截止频率500Hz
f_simple=20000;%采样频率20kHz
PointNumber = 100000;%坐标点数量

x=0:1:PointNumber-1;
Standard =2+0.05*sin(w_basic*x*0.00005);%原始标准信号
noise = 0+0.05*randn(1,PointNumber);

a=2*pi*f_H/f_simple;
y_last=0;
y_now=0;
for i = 0:1:PointNumber-1
y_now=(1-a)*y_last+a*x_now;
output(i+1)=y_now;
y_last=y_now;
end
figure(1);
X=0:1:PointNumber-1;
plot(X,output,'-..r');hold on;

xlabel('time');
ylabel('value');
title('一阶低通滤波器（直流信号测试）');

f_H=1;%截止频率500Hz
a=2*pi*f_H/f_simple;
y_last=0;
y_now=0;
for i = 0:1:PointNumber-1
y_now=(1-a)*y_last+a*x_now;
output(i+1)=y_now;
y_last=y_now;
end
plot(X,output,'-..c');hold on;

f_H=0.5;%截止频率500Hz
a=2*pi*f_H/f_simple;
y_last=0;
y_now=0;
for i = 0:1:PointNumber-1
y_now=(1-a)*y_last+a*x_now;
output(i+1)=y_now;
y_last=y_now;
end
plot(X,output,'-..m');hold on;

f_H=0.2;%截止频率500Hz
a=2*pi*f_H/f_simple;
y_last=0;
y_now=0;
for i = 0:1:PointNumber-1
y_now=(1-a)*y_last+a*x_now;
output(i+1)=y_now;
y_last=y_now;
end
plot(X,output,'-..k');hold on;

f_H=0.1;%截止频率500Hz
a=2*pi*f_H/f_simple;
y_last=0;
y_now=0;
for i = 0:1:PointNumber-1
y_now=(1-a)*y_last+a*x_now;
output(i+1)=y_now;
y_last=y_now;
end
plot(X,output,'-..r');hold on;

plot(X,Standard,'-..b');hold on;

legend('With noise','Output-500Hz','Output-1Hz','Output-0.5Hz','Output-0.2Hz','Output-0.1Hz','Standard')


• 45
点赞
• 164
收藏
觉得还不错? 一键收藏
• 3
评论
05-23 1019
11-11 5634
01-12 2679
11-11 1万+
10-18 1万+
12-12 2375
06-10 4万+
04-01 2129
03-04 1854
11-16 812

### “相关推荐”对你有帮助么？

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、付费专栏及课程。