带通采样的matlab代码
时间: 2023-10-17 21:05:39 浏览: 72
matlab.zip_rs matlab_带通采样
以下是一个简单的带通采样的MATLAB代码示例:
```matlab
% 输入信号
fs = 1000; % 采样率为1000 Hz
t = 0:1/fs:1; % 时间向量,采样1秒
f1 = 50; % 信号频率为50 Hz
f2 = 150; % 噪声频率为150 Hz
signal = sin(2*pi*f1*t) + 0.5*sin(2*pi*f2*t); % 输入信号
% 带通滤波器
fc1 = 70; % 低截止频率为70 Hz
fc2 = 130; % 高截止频率为130 Hz
[b,a] = butter(4, [fc1, fc2]/(fs/2), 'bandpass'); % 4阶巴特沃斯带通滤波器
% 采样
fs_new = 200; % 新的采样率为200 Hz
t_new = 0:1/fs_new:1; % 新的时间向量,采样1秒
signal_new = interp1(t, signal, t_new); % 线性插值采样
% 滤波
filtered_signal = filter(b, a, signal_new); % 使用巴特沃斯带通滤波器进行滤波
% 绘图
subplot(2,1,1);
plot(t, signal);
xlabel('Time (s)');
ylabel('Amplitude');
title('Original Signal');
subplot(2,1,2);
plot(t_new, filtered_signal);
xlabel('Time (s)');
ylabel('Amplitude');
title('Filtered Signal');
```
在此示例中,我们首先创建了一个包含50 Hz正弦波和150 Hz噪声的输入信号。然后,我们使用`butter`函数创建了一个4阶巴特沃斯带通滤波器,其低截止频率为70 Hz,高截止频率为130 Hz。接下来,我们将信号采样率从1000 Hz降低到200 Hz,并使用带通滤波器对其进行滤波。最后,我们绘制了原始信号和滤波后的信号的图形,以便进行比较。
阅读全文