用matlab生成包含320Hz、2KHz、3KHz正弦混合信号作为仿真数据源,幅值分别为1000,500,500,采样频率8KHz,采样长度256点的fir带通滤波器
时间: 2024-03-26 20:34:52 浏览: 55
好的,以下是使用 MATLAB 生成包含320Hz、2KHz、3KHz正弦混合信号作为仿真数据源,幅值分别为1000,500,500,采样频率8KHz,采样长度256点的fir带通滤波器的代码示例:
```matlab
% 生成正弦混合信号
fs = 8000; % 采样频率8KHz
t = 0:1/fs:255/fs; % 采样长度256点
f1 = 320; % 正弦信号1频率320Hz
f2 = 2000; % 正弦信号2频率2KHz
f3 = 3000; % 正弦信号3频率3KHz
x = 1000*sin(2*pi*f1*t) + 500*sin(2*pi*f2*t) + 500*sin(2*pi*f3*t); % 三个正弦信号叠加
% 生成带通滤波器
fpass = [400 2500]; % 通带频率范围为400Hz到2500Hz
wpass = fpass/(fs/2); % 归一化通带频率
N = 50; % 滤波器阶数为50
h = fir1(N,wpass); % 生成FIR滤波器系数
% 滤波
y = filter(h,1,x);
% 绘图显示
subplot(2,1,1);
plot(t,x);
title('原始信号');
xlabel('时间/s');
ylabel('幅值');
grid on;
subplot(2,1,2);
plot(t,y);
title('滤波后信号');
xlabel('时间/s');
ylabel('幅值');
grid on;
```
上述代码中,首先定义了采样频率 `fs` 和采样长度 `t`,然后生成了三个正弦信号的叠加信号 `x`。接着定义了带通滤波器的通带频率范围 `fpass` 和滤波器阶数 `N`,并调用 `fir1` 函数生成滤波器系数 `h`。最后,使用 `filter` 函数进行滤波处理,并用 `subplot` 函数绘制原始信号和滤波后信号的图形。
阅读全文