matlab生成一包含频率为20Hz、50Hz、120Hz的正弦信号, 并绘制其时域波形和频谱
时间: 2024-10-20 09:19:23 浏览: 42
利用MATLAB实现信号DFT的计算
5星 · 资源好评率100%
在MATLAB中,你可以使用`sin`函数生成特定频率的正弦信号,并结合` linspace `和`plot `函数进行时域波形绘制。为了同时包含20Hz、50Hz和120Hz的信号,我们可以创建一个时间向量,然后对每个频率分别应用`sin`函数。频谱分析则可以使用`fft`函数计算快速傅立叶变换。
以下是一个示例代码:
```matlab
% 设置信号参数
fs = 1000; % 采样率 (Hz)
tspan = 0:1/fs:1; % 时间范围 [0, 1]秒
% 创建各频率的正弦信号
frequencies = [20, 50, 120]; % 频率数组
signals = sin(2*pi*frequencies.*tspan);
% 绘制时域波形
figure;
title('时域波形');
hold on;
for i = 1:length(frequencies)
plot(tspan, signals(:,i), 'LineWidth', 1, sprintf('Color', colormapJet(i/length(frequencies)))); % 使用颜色区分不同频率
end
legendStrings = cellstr(num2str(frequencies));
legend(legendStrings);
hold off;
% 计算并绘制频谱
figure;
title('频谱图');
spectrogram(signals, [], [], fs, 'yaxis');
YTick = freqs(fs, size(signals, 2)); % 更新频轴刻度
yticklabels(YTick, num2str(YTick / fs) + ' Hz');
% 关闭不必要的警告
warning off
```
这个代码首先生成了三个频率的正弦信号,然后分别绘制了它们的时域波形,并通过不同颜色区分。接着,它利用`spectrogram`函数生成频谱图,显示了信号的主要频率成分。
阅读全文