刚刚第一个问题帮我写画图的matlab代码
时间: 2023-08-28 17:28:21 浏览: 45
当然可以。下面是Matlab画出正弦波为1kHz、抽样频率为6kHz的抽样信号频谱的代码:
```matlab
% 设置采样参数
fs = 6000; % 抽样频率
Ts = 1/fs; % 抽样周期
T = 1/fs; % 采样周期
L = 1000; % 采样点数
t = (0:L-1)*T; % 时间轴
% 生成1kHz正弦波
f0 = 1000; % 正弦波频率
x = sin(2*pi*f0*t);
% 进行抽样
xn = x(1:fs/f0:end);
% 计算抽样信号的频谱
N = length(xn); % 抽样点数
f = (-N/2:N/2-1)*(fs/N); % 频率轴
Xn = fftshift(fft(xn)/N);
% 画图
subplot(2,1,1);
plot(t,x);
title('1kHz正弦波');
xlabel('时间 (s)');
ylabel('幅度');
grid on;
subplot(2,1,2);
plot(f,abs(Xn));
title('抽样信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');
grid on;
```
运行代码后,会生成两个子图。第一个子图显示了1kHz正弦波的波形,第二个子图显示了抽样信号的频谱,可以看到频谱中包含了很多混叠的频率分量。
如果需要画出恢复信号的波形,需要再加上一个低通滤波器的处理步骤。可以使用MATLAB的filter函数来实现低通滤波器的功能。代码如下:
```matlab
% 设置低通滤波器参数
fc = 2000; % 截止频率
[b,a] = butter(4,fc/(fs/2),'low'); % 4阶低通滤波器
% 对抽样信号进行低通滤波
y = filter(b,a,xn);
% 画出恢复信号的波形
figure;
plot(t,x,'b',t,y,'r');
legend('原始信号','恢复信号');
title('恢复信号波形');
xlabel('时间 (s)');
ylabel('幅度');
grid on;
```
运行以上代码后,会生成一个新的图形窗口,其中蓝色曲线表示原始信号的波形,红色曲线表示经过低通滤波器处理后的恢复信号的波形。可以看到恢复信号的波形与原始信号的波形非常接近,说明恢复信号已经成功地还原出了原始信号。