用matlab生成包含320Hz、2KHz、3KHz正弦混合信号作为仿真数据源,幅值分别为1000,500,500,采样频率8KHz,采样长度256点的低通滤波器
时间: 2024-03-26 16:34:32 浏览: 49
好的,我可以为您提供一段 MATLAB 代码来生成包含320Hz、2KHz、3KHz正弦混合信号,并进行低通滤波:
```matlab
% 生成混合信号
fs = 8000; % 采样频率8KHz
t = 0:1/fs:255/fs; % 采样长度256点
f1 = 320; % 320Hz
f2 = 2000; % 2KHz
f3 = 3000; % 3KHz
A1 = 1000; % 320Hz正弦波幅值1000
A2 = 500; % 2KHz正弦波幅值500
A3 = 500; % 3KHz正弦波幅值500
x = A1*sin(2*pi*f1*t) + A2*sin(2*pi*f2*t) + A3*sin(2*pi*f3*t);
% 低通滤波器
fc = 1000; % 截止频率1000Hz
[b,a] = butter(4,fc/(fs/2)); % 4阶Butterworth低通滤波器
y = filter(b,a,x);
% 绘制原始信号和滤波后信号的时域波形和频谱图
figure;
subplot(2,2,1);
plot(t,x);
title('原始信号时域波形');
xlabel('Time(s)');
ylabel('Amplitude');
subplot(2,2,2);
f = (-fs/2:fs/length(x):fs/2-fs/length(x));
X = fftshift(fft(x));
plot(f,abs(X));
title('原始信号频谱图');
xlabel('Frequency(Hz)');
ylabel('Magnitude');
subplot(2,2,3);
plot(t,y);
title('滤波后信号时域波形');
xlabel('Time(s)');
ylabel('Amplitude');
subplot(2,2,4);
Y = fftshift(fft(y));
plot(f,abs(Y));
title('滤波后信号频谱图');
xlabel('Frequency(Hz)');
ylabel('Magnitude');
```
运行上述代码后,将会生成混合信号的时域波形图、频谱图,以及经过低通滤波后的信号的时域波形图、频谱图。您可以根据需要对代码中的参数进行修改,如采样频率、采样长度、正弦波频率、正弦波幅值、截止频率等。
阅读全文