MATLAB观察信号频谱
时间: 2025-01-09 21:50:02 浏览: 7
### 使用MATLAB进行信号频谱分析
#### 创建和加载信号数据
为了在 MATLAB 中观察和分析信号的频谱,首先要创建或导入待分析的数据。如果要生成一个合成信号用于演示目的:
```matlab
Fs = 1000; % Sampling frequency (Hz)
T = 1/Fs; % Sampling period (seconds)
L = 1500; % Length of signal
t = (0:L-1)*T; % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
X = S + 2*randn(size(t)); % Noisy signal with added Gaussian noise
```
这段代码定义了一个由两个正弦波组成的混合信号,并加入了随机噪声。
#### 应用快速傅里叶变换(FFT)
接着应用 FFT 函数转换时间序列至频域表示形式[^3]:
```matlab
Y = fft(X);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f = Fs*(0:(L/2))/L;
plot(f,abs(P1))
title('Single-Sided Amplitude Spectrum of X(t)')
xlabel('Frequency (f)')
ylabel('|P1(f)|')
```
上述脚本计算了单边幅度谱并绘制图表展示结果。这里 `fft` 是执行离散傅立叶变换的核心函数;而后续操作则是为了获得更直观的结果呈现方式——即只保留正频率部分,并调整其比例因子以反映实际物理意义下的强度分布情况[^1]。
#### 解读频谱图
从所绘出的图形中可以看到原始信号中存在的主要成分及其对应的频率位置。对于之前构建的例子而言,在大约 50Hz 和 120Hz 处应该会出现明显的峰值,这正是我们预期看到的现象,因为这些正好对应着最初设定好的两组正弦波动率[^2]。
阅读全文