matlab实现带通采样代码
时间: 2023-10-26 08:12:51 浏览: 91
以下是 MATLAB 实现带通采样的代码示例:
```matlab
% 生成原始信号
fs = 1000; % 采样率为 1000 Hz
t = 0:1/fs:1-1/fs; % 时间范围为 1 秒
f1 = 50; % 原始信号频率为 50 Hz
f2 = 150; % 原始信号频率为 150 Hz
x = sin(2*pi*f1*t) + sin(2*pi*f2*t); % 原始信号
% 设计带通滤波器
f_low = 75; % 带通滤波器低通截止频率为 75 Hz
f_high = 125; % 带通滤波器高通截止频率为 125 Hz
order = 4; % 滤波器阶数为 4
[b, a] = butter(order, [f_low, f_high]/(fs/2), 'bandpass'); % 生成数字滤波器系数
% 带通滤波
y = filter(b, a, x);
% 带通采样
fs_new = 200; % 带通采样率为 200 Hz
t_new = 0:1/fs_new:1-1/fs_new; % 时间范围为 1 秒
y_new = interp1(t, y, t_new, 'linear'); % 线性插值
% 绘图
subplot(3,1,1);
plot(t,x);
title('原始信号');
subplot(3,1,2);
plot(t,y);
title('带通滤波后信号');
subplot(3,1,3);
plot(t_new,y_new);
title('带通采样后信号');
```
该代码首先生成一个包含两个正弦波的原始信号,然后设计一个带通滤波器并将原始信号通过该滤波器进行滤波。接着,将滤波后的信号进行带通采样,并绘制出原始信号、滤波后信号和采样后信号的时域波形图。
阅读全文