matlab生成一包含频率为 20Hz、50Hz、120Hz 的正弦信号,并绘制其时域波 形和频谱;
时间: 2024-10-16 22:08:20 浏览: 155
在MATLAB中,你可以使用`sin`函数创建正弦信号,并结合` linspace `函数设置时间轴,然后使用`fft `函数计算频谱。以下是生成和可视化所需步骤的示例:
```matlab
% 设置参数
fs = 1000; % 采样频率,每秒1000次
t = 0:1/fs:1; % 时间向量,从0到1秒,共1001个点
% 创建不同频率的正弦信号
frequencies = [20, 50, 120]; % 频率列表
signals = sin(2*pi*frequencies'*t); % 计算每个频率的正弦信号
% 绘制时域波形
figure;
plot(t, signals);
xlabel('Time (s)');
ylabel('Amplitude');
title('Sinusoidal Signals in Time Domain');
% 计算并绘制频谱
spectra = abs(fft(signals)) ./ length(t); % 傅立叶变换并归一化
[freq, spectrum] = freqz(frequencies, ones(size(frequencies)), fs); % 获得频率间隔和频谱数据
figure;
plot(freq, spectrum);
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Spectrum of Sinusoidal Signals');
% 显示结果
grid on;
```
这段代码首先生成了三个频率的正弦信号,然后分别绘制了它们的时域波形和各自的频谱图。`freqz`函数用于快速傅立叶变换(FFT),而`fft`则对整个信号集合进行了处理。
阅读全文