正弦信号的抽样与重建的MATLAB代码是什么
时间: 2023-11-28 08:51:28 浏览: 86
正弦信号的matlab代码-Myspectrogram:频谱图
以下是正弦信号的抽样与重建的MATLAB代码:
```matlab
% 设置采样频率和信号频率
Fs = 1000;
f = 20;
% 生成正弦信号
t = 0:1/Fs:1;
x = sin(2*pi*f*t);
% 绘制原始信号的时域图像
subplot(2,1,1);
plot(t,x);
title('Original Signal');
xlabel('Time (s)');
ylabel('Amplitude');
% 设置采样率和采样点数
Fs_new = 200;
N = round(Fs/Fs_new);
% 抽样
x_sampled = x(1:N:end);
% 绘制抽样后的时域图像
subplot(2,1,2);
stem(x_sampled);
title('Sampled Signal');
xlabel('Sample Number');
ylabel('Amplitude');
% 重建
x_reconstructed = zeros(size(x));
x_reconstructed(1:N:end) = x_sampled;
x_reconstructed = conv(x_reconstructed, ones(1,N)/N, 'same');
% 绘制重建后的时域图像
figure;
subplot(2,1,1);
plot(t,x_reconstructed);
title('Reconstructed Signal');
xlabel('Time (s)');
ylabel('Amplitude');
% 绘制重建后的频域图像
subplot(2,1,2);
f_axis = linspace(-Fs/2, Fs/2, length(x_reconstructed));
X = fftshift(fft(x_reconstructed));
plot(f_axis, abs(X));
title('Frequency Spectrum');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
```
这段代码首先生成一个频率为20Hz的正弦信号,然后以1000Hz的采样率对其进行采样,并以200Hz的采样率对其进行抽样和重建。最终绘制出原始信号、抽样后的信号、重建后的信号以及重建后的信号的频谱图像。
阅读全文