用matlab画出正弦波的频谱的完整代码
时间: 2024-10-24 10:14:06 浏览: 54
在MATLAB中,你可以使用`fft`函数来计算信号的频谱,并通过`plot`函数将其可视化。下面是一个简单的例子,展示如何绘制正弦波的频谱:
```Matlab
% 设定信号参数
fs = 1000; % 采样频率 (Hz)
t = 0:1/fs:1; % 时间向量
freq = 10; % 正弦波的频率
% 创建正弦波信号
signal = sin(2*pi*freq*t);
% 计算并绘制频谱
spectrogram = abs(fft(signal));
frequencies = (0:length(spectrogram)-1) * fs / length(spectrogram); % 频率轴范围
% 对结果进行对数压缩,以便更好地显示低频部分
spectrogram_db = 20*log10(spectrogram);
% 窗口化,可以选择hanning窗或其他窗函数
window_size = floor(length(signal)/4);
window = hann(window_size);
spectrogram_db_windowed = spectrogram_db(window_size:end, :).*window;
% 绘制频谱图
imagesc(frequencies, t(end:-1:1), spectrogram_db_windowed);
colorbar;
xlabel('Frequency (Hz)');
ylabel('Time (s)');
title('Spectrum of a Sinusoidal Wave');
% 显示
figure;
plot(frequencies, max(spectrogram_db_windowed, [], 2)); % 主峰突出显示
grid on;
xlim([0 fs/2]);
xlabel('Frequency (Hz)');
ylabel('Amplitude');
title('Magnitude Spectrum of the Sinusoid');
```
阅读全文