编写matlab程序,实现若某信号由频率为 100Hz 和200Hz 的两个正弦信号,幅度分别为0.6和0.7 叠加而成,设计一个数字滤波器, 滤除200Hz的信号,画出原信号的频谱,以及滤去200Hz 后的信号频谱
时间: 2024-05-10 11:14:30 浏览: 183
以下是实现该功能的 MATLAB 代码:
```matlab
% 生成信号
fs = 1000; % 采样率为 1000Hz
t = 0:1/fs:1-1/fs; % 时间序列
f1 = 100; % 信号1的频率为 100Hz
f2 = 200; % 信号2的频率为 200Hz
x = 0.6*sin(2*pi*f1*t) + 0.7*sin(2*pi*f2*t); % 叠加信号
% 绘制原信号的频谱
N = length(x); % 信号长度
X = abs(fft(x))/N; % 取模并标准化
f = (0:N-1)*fs/N; % 频率序列
figure;
plot(f, X);
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Original Signal Spectrum');
% 设计数字滤波器
fc = 150; % 截止频率为 150Hz
[b, a] = butter(2, fc/(fs/2), 'low'); % 2阶低通Butterworth滤波器
% 滤波
y = filter(b, a, x);
% 绘制滤波后的信号频谱
Y = abs(fft(y))/N; % 取模并标准化
figure;
plot(f, Y);
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Filtered Signal Spectrum');
```
运行该代码后,可以得到原信号的频谱图和滤波后的信号频谱图。其中,原信号频谱中可以看到两个频率分别为100Hz和200Hz的正弦波成分,而滤波后的信号频谱中只剩下了100Hz的正弦波成分。
阅读全文