作为一个电控工程师,在分析采集的信号的时候,如果只停留在靠经验和感觉去给出结论,就会陷入经验论,很多时候不能找到事情的本源,所以采集信号后,对信号进行傅里叶变化,拨开现象更好的发现内部的本源,才能在技术上更上一层楼。
以前写的一个通过matlab 进行FFT的脚本,直接上代码
% 导入采样点和采样频率 计算FFT
function [FFT_FundA,FFT_FundP,Ax,Ay,py]=FFT_DKZ(InputSampleValue,fs)
%FFT function by FFT_DKZ 20210820
%input sample data and sample frequency
%output compute Amplitude and phase
fft_N=length(InputSampleValue);
FFT_sample_T =InputSampleValue;
Y=fft(FFT_sample_T,fft_N);%%获得fft后的复数
Ayy=abs(Y);%% 获得幅值
Ay=[Ayy(1)/fft_N,Ayy(2:fft_N)/fft_N*2];%获得幅值
Ax=([1:fft_N]-1)*fs/fft_N;%获得频率 采样频率除以点出是频率的间隔 从0~N-1
py=atan2(imag(Y),real(Y)); %和phase 效果一样
FFT_FundA=max(Ay);
% A_low=find(Ay<FFT_FundA*0.5);% 可以屏蔽掉低幅值的信号更好的看到比重大的信号的相位
% py(A_low)=0;
fund_Index = find(Ay == max(Ay),1);
FFT_FundP=py(fund_Index);
end