正直的键盘 · DBSCAN 轮廓系数 Number of ...· 2 月前 · |
不拘小节的排球 · IllegalStateException: ...· 5 月前 · |
独立的脆皮肠 · 为什么出现“initializer ...· 9 月前 · |
睿智的爆米花 · html转aspx在线,将.aspx转换为. ...· 12 月前 · |
大鼻子的镜子 · C 乘法运算符 | Microsoft Learn· 1 年前 · |
如果本文帮到了你,帮忙点个赞;
如果本文帮到了你,帮忙点个赞;
如果本文帮到了你,帮忙点个赞;
HPF 一阶RC高通滤波器详解(仿真+matlab+C语言实现)
LPF 一阶RC低通滤波器详解(仿真+matlab+C语言实现)
低通滤波器(
LPF
)可以滤除频率高于截止频率的信号,类似的还有高通滤波器,带通滤波器,带阻滤波器。一阶RC低通滤波器的电路如下图所示;
因此可以将③式转化为:
x
i
−
y
i
=
R
C
△
T
y
i
−
y
i
−
1
⋯
④
因此最终滤波输出的序列
y
i
如下所示;
同样进行简化之后可以得到;
y
i
=
α
∗
x
i
+
(
1
−
α
)
∗
y
i
−
1
后面可以根据这个公式进行程序设计;
另外,截止频率
f
c
满足;
f
c
=
2
π
R
C
1
⋯
⑤
这里直接根据公式③构建一搞
Subsystem
;
V
i
n
(
t
)
−
V
o
u
t
(
t
)
=
R
C
d
t
d
V
o
u
t
Subsystem
整体的仿真图如下:
其中
Sine Wave
频率设置为
2*pi*50
其中
Sine Wave1
频率设置为
2*pi
所以这里需要使得
2*pi*50
的信号衰减,所以根据,截止频率
f
c
的计算公式,可以改变增益的值,具体如下所示;
最终的仿真的运行结果如下图所示;
Gain Value
为
0.005
Gain Value
为
0.0318
根据公式
y
i
=
α
∗
x
i
+
(
1
−
α
)
∗
y
i
−
1
实现数字一阶RC低通滤波器,具体matlab程序如下;
运行结果如下所示;
low_filter.h
typedef struct int16_t Input; int16_t Output[2]; int32_t FilterTf; int32_t FilterTs; int32_t Kr; int32_t Ky; } low_filter; void low_filter_init(low_filter *v); int16_t low_filter_calc(low_filter *v);
FilterTs
为采样时间;FilterTf
为RC
时间常数具体参考下图;
low_filter.c
void low_filter_init(low_filter *v){ v->Kr = v->FilterTs*1024/(v->FilterTs + v->FilterTf); v->Ky = v->FilterTf*1024/(v->FilterTs + v->FilterTf); int16_t low_filter_calc(low_filter *v){ int32_t tmp = 0; tmp = ((int32_t)v->Kr*v->Input + v->Ky*v->Output[1])/1024; if(tmp>32767){ tmp = 32767; if( tmp < -32768){ tmp = -32768; v->Output[0] = (int16_t)tmp; v->Output[1] = v->Output[0]; return v->Output[0];
7 C语言运行结果
实际测试结果
正直的键盘 · DBSCAN 轮廓系数 Number of labels is 1. Valid values are 2 to n_samples - 1 (inclusive) - CSDN文库 2 月前 |
不拘小节的排球 · IllegalStateException: 非法访问;此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,抛出以下堆栈跟踪_illegalstateexception非法访 5 月前 |
大鼻子的镜子 · C 乘法运算符 | Microsoft Learn 1 年前 |