之前就知道在matlab里用fft就能看到输入信号的频谱,比如下图
但是波峰值具体表示的频率是多少不是很直观,今天研究了一下他们的对应关系。上面的图形的matlab代码如下
clear
f=10.1;
fs=100;
tao=1/fs;
N=1;
n=0:tao:N;
x=sin(2*pi*f*n);
%for i=500:1000; %模拟加零
% x(i)=0;
%end
subplot(2,1,1)
plot(n,x) (1)
subplot(2,1,2)
plot(n*fs/N,fft(x)) (2)
从程序可以看出原始波形是频率为10.1Hz的正弦波,以100Hz的频率对其在0~1之间采样,如果直接以n为横坐标去画fft的波形,横坐标的刻度与实际频率的关系就很难看的出来,而如果对n乘以fs再除以N,就会跟实际频率对应起来了,如下图
这时第一个波峰的横坐标显示为10,与实际频率的10.1近似相等,如何精确相等后面会详细说明。
为什么要对n这么进行处理呢,首先看一下fft波形的物理意义。在fft或者dft中,时域采样多少个点,频域就得到多少个点的频谱,而每一个点都代表固定的频率。从程序可以看出采

本文探讨了在MATLAB中使用FFT分析信号频谱时,如何理解FFT波形的横坐标与实际频率的关系。通过示例代码,解释了为何要对n乘以fs再除以N来获取与实际频率对应的波峰位置。增加采样序列长度而非仅提高采样频率,是实现频谱测量精度提升的关键。

233

被折叠的 条评论
为什么被折叠?



