matlab波形的低通滤波器
时间: 2023-11-21 11:57:08 浏览: 40
为了设计一个截止频率为15.9kHz的RC低通滤波器,可以使用MATLAB中的`butter`函数。下面是一个示例代码:
```matlab
% 设计一个截止频率为15.9kHz的RC低通滤波器
fs = 100e3; % 采样率
fc = 15.9e3; % 截止频率
order = 4; % 滤波器阶数
[b, a] = butter(order, fc/(fs/2), 'low'); % 设计滤波器
% 生成一个测试信号
t = 0:1/fs:1-1/fs; % 时间向量
x = sin(2*pi*1e3*t) + sin(2*pi*10e3*t); % 1kHz和10kHz的正弦波信号
y = filter(b, a, x); % 用滤波器滤波
% 绘制时域波形
subplot(2,1,1);
plot(t, x, 'b', t, y, 'r');
xlabel('Time (s)');
ylabel('Amplitude');
title('Time Domain Waveform');
legend('Input Signal', 'Filtered Signal');
% 绘制频域波形
N = length(x); % 信号长度
X = fft(x)/N; % 傅里叶变换
Y = fft(y)/N;
f = (0:N-1)*(fs/N); % 频率向量
subplot(2,1,2);
plot(f/1e3, 20*log10(abs(X)), 'b', f/1e3, 20*log10(abs(Y)), 'r');
xlabel('Frequency (kHz)');
ylabel('Magnitude (dB)');
title('Frequency Domain Waveform');
legend('Input Signal', 'Filtered Signal');
```
上述代码中,我们首先使用`butter`函数设计了一个4阶、截止频率为15.9kHz的低通滤波器。然后,我们生成了一个测试信号,包含1kHz和10kHz的正弦波信号。接着,我们使用`filter`函数将滤波器应用到测试信号上,得到了滤波后的信号。最后,我们绘制了滤波前后的时域波形和频域波形。