matlab快速傅里叶变换的代码
时间: 2024-12-27 14:24:57 浏览: 8
### MATLAB 中实现快速傅里叶变换 (FFT)
在 MATLAB 中,`fft()` 函数用于计算离散傅里叶变换。下面是一个完整的代码示例,展示了如何对信号执行 FFT 并绘制其频谱图。
#### 1. 加载或创建测试信号
为了展示 FFT 的应用,先定义一个简单的复合正弦波作为输入信号:
```matlab
Fs = 1000; % 采样频率 (Hz)
T = 1/Fs; % 采样周期 (秒)
L = 1500; % 信号长度
t = (0:L-1)*T; % 时间向量
% 创建包含两个不同频率分量的信号
f1 = 50;
f2 = 120;
X = 0.7*sin(2*pi*f1*t) + sin(2*pi*f2*t);
```
此段代码构建了一个由两个不同频率组成的合成信号[^1]。
#### 2. 执行快速傅里叶变换
接着调用 `fft()` 来对该信号进行转换,并获取相应的频率轴:
```matlab
Y = fft(X); % 计算傅里叶变换
P2 = abs(Y/L); % 归一化双边幅度谱
P1 = P2(1:L/2+1); % 提取单边幅值
P1(2:end-1) = 2*P1(2:end-1); % 单边谱能量加倍(除直流和Nyquist)
f = Fs*(0:(L/2))/L; % 频率范围
```
这里完成了从时域到频域的数据转换过程[^2]。
#### 3. 绘制结果
最后一步是可视化所得的结果,分别画出原始时间和变换后的频率表示形式:
```matlab
figure;
subplot(2,1,1)
plot(t,X)
title('Signal in Time Domain')
xlabel('Time / s')
ylabel('Amplitude')
subplot(2,1,2)
plot(f,P1)
title('Single-Sided Amplitude Spectrum of X(t)')
xlabel('Frequency / Hz')
ylabel('|P1(f)|')
grid on
```
上述绘图命令能够清晰地显示出原有时域内的波动形态及其对应的频域特征[^3]。
阅读全文