y = cos(2*pi*2*t) + cos(2*pi*6*t) + cos(2*pi*20*t); 带有三个频率分量的信号真信号,采样频率1000 Hz。 仿真信号长度1000个采样点。使用带通滤波从仿真信号y中提取3个频率的分量。matlab
时间: 2023-07-23 09:41:19 浏览: 185
Matlab图像处理(仿真信号)
可以使用MATLAB自带的fir1函数设计带通滤波器,然后使用filter函数对原始信号进行滤波。
示例代码如下:
```matlab
% 生成原始信号
fs = 1000; % 采样频率
t = 0:1/fs:1-1/fs; % 时间序列
f1 = 2; % 频率1
f2 = 6; % 频率2
f3 = 20; % 频率3
y = cos(2*pi*f1*t) + cos(2*pi*f2*t) + cos(2*pi*f3*t); % 信号
% 设计带通滤波器
fpass = [1 30]; % 通带频率范围
order = 200; % 滤波器阶数
b = fir1(order, fpass/(fs/2), 'bandpass'); % FIR带通滤波器系数
% 对原始信号进行滤波
y_filtered = filter(b, 1, y);
% 绘制原始信号和滤波后的信号的频谱图
Y = fft(y);
Y_filtered = fft(y_filtered);
f = (0:length(Y)-1)/length(Y)*fs;
figure;
subplot(2,1,1);
plot(f, abs(Y));
xlabel('频率 (Hz)');
ylabel('幅值');
title('原始信号频谱图');
subplot(2,1,2);
plot(f, abs(Y_filtered));
xlabel('频率 (Hz)');
ylabel('幅值');
title('滤波后信号频谱图');
```
运行以上代码后,会得到滤波后的信号频谱图,其中只有3个频率分量被保留了下来。
阅读全文