一阶RC滤波器传递函数
时间: 2024-12-29 11:16:09 浏览: 22
### 一阶 RC 滤波器传递函数
#### S 域中的表达形式
在一阶RC低通滤波电路中,在S域下的传递函数可以表示为:
\[ H(s) = \frac{V_{\text{out}}}{V_{\text{in}}} = \frac{1}{RCs + 1} , (s=jω)\]
其中 \( R \) 是电阻值,\( C \) 是电容值,而 \( s \) 表示复频域变量[^1]。
#### Z 变换后的离散时间模型
为了将连续系统的传递函数转换到离散时间领域以便于数字实现,采用了一阶后向差分法来进行Z变换。具体来说,
\[ s=\frac{1-z^{-1}}{T}\]
这里的 \( T \) 表示采样周期。通过上述关系可得到离散化的传递函数版本。
#### 参数选择与应用实例
当目标是从输入信号中去除高于特定截止频率(比如10kHz)的成分时,则可以根据所需设定相应的角频率 \( f_c \),并据此求解合适的 \( RC \) 组合以满足设计需求。例如如果希望设置截至频率为1kHz,则可以通过调整元件参数使得该条件成立[^2]。
#### Alpha 参数的影响
对于某些应用场景而言,还涉及到一个称为 alpha 的因子用于调节响应特性;当此值等于1.0时表示不施加任何额外处理即保持原样输出;随着其数值减小则意味着更平滑但也更加滞后的结果呈现给用户端。因此在现场实践中通常会在一定范围内选取适当大小来平衡两者之间的矛盾[^3]。
```python
import numpy as np
from scipy import signal
def rc_lowpass(fc, fs):
"""Design a first-order low-pass RC filter.
Args:
fc : float
Cut-off frequency of the filter in Hz.
fs : float
Sampling rate in Hz.
Returns:
b,a : ndarray
Numerator (`b`) and denominator (`a`)
polynomials of the IIR filter.
"""
omega_c = 2 * np.pi * fc
dt = 1 / fs
# Calculate coefficients based on given formulae
tau = 1/(omega_c)
a = [1, -np.exp(-dt/tau)]
b = [(1-np.exp(-dt/tau))]
return b, a
# Example usage with cut-off at 1 kHz sampled at 48 kHz
b, a = rc_lowpass(1000, 48000)
print("Filter Coefficients:")
print(f"B={b}")
print(f"A={a}")
w, h = signal.freqz(b, a, worN=8000)
freq = w*fs/(2*np.pi)
gain_db = 20 * np.log10(abs(h))
plt.semilogx(freq, gain_db)
plt.title('Low-Pass Filter Frequency Response')
plt.xlabel('Frequency [Hz]')
plt.ylabel('Amplitude [dB]')
plt.margins(0, 0.1)
plt.grid(which='both', axis='both')
plt.axvline(1000, color='red') # cutoff frequency
plt.show()
```
阅读全文