matlab的fft函数会返回频率吗
时间: 2023-07-21 11:03:50 浏览: 127
MATLAB的`fft`函数会返回复数数组,其中包含信号的频域表示。该数组的长度等于输入信号的长度,并且包含了信号的所有频率分量。要获取频率信息,可以使用MATLAB中的`fftshift`函数将频谱移动,使其以零频率为中心,然后使用`linspace`函数生成频率轴。如果时间间隔为dt,则频率轴上的单位是Hz。以下是一个示例代码:
```matlab
% 定义信号
fs = 1000; % 采样率
dt = 1/fs; % 时间间隔
t = 0:dt:1-dt; % 时间轴
f1 = 10; f2 = 50; % 信号频率
x = sin(2*pi*f1*t) + 0.5*sin(2*pi*f2*t);
% 计算频谱
X = fft(x);
X = fftshift(X);
f = linspace(-fs/2, fs/2, length(x));
% 绘制频谱
plot(f, abs(X));
xlabel('Frequency (Hz)');
ylabel('Magnitude');
```
在这个例子中,我们通过`linspace`函数生成了一个频率轴`f`,并使用`fftshift`函数将频谱移动到中心。在绘制频谱时,我们使用`abs`函数获取频谱幅度信息。
阅读全文