提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
傅里叶变换在matlab中实现的详细解释。
一、傅里叶变换的matlab实现
x = 0:pi/30:2*pi;
data = cos(x).*sin(exp(x));
fs=100 %采样率
N=61 %数据处理点数
data_fft=abs(fft(data,N))/(N/2);
f=fs*(0:N)/N; %横轴频率刻度:最大值取决于fs
figure()
plot([1:61]/fs,data)
xlabel('时间/s')
figure()
plot(f(1:N/2),data_fft(1:N/2))
xlabel('频率/HZ')
二、逐步拆解
- fs=100
采样率,单位HZ
- N=128
变换数据点数
- y=fft(x,N)
初始频率幅值:对y进行傅里叶变换,x为待变换信号
- mag1=abs(y)
- mag2=mag1/N*2
最终频率幅值/N*2
/N:采用N1点和N2点的相同频率的振幅是有不同的表现值,为了与真实振幅对应,需要将变换后结果乘以2除以N。
*2:信号的频谱是前后对称的,正负轴上都分配了幅值占比,而一般负频率没有物理意义,所以把正频率对应的频率幅值的两倍作为频谱幅值。
- f=fs*(0:N)/N)
频率变化范围,即作为频谱x轴
虽然fft变换的时候没有输入fs,但是最终的频谱横轴是由fs决定的
- plot(f,mag2)
原始频谱图(有一半重复)
- plot(f(1:N/2),mag2(1:N/2))
最终频谱图:原始频谱图的一半(此时f最大值只有原来的一半,符合奈奎斯特定律)
注:fft描述的特定信号频率在整个信号中的占比大小,即频率幅值含义是频率占比,指该频率成分在整个信号所有频率中的占比。