关于python实现频域分析时的参数解释(针对 scipy.signal.stft):
输入参数
1.fs:表示时序信号的采样频域
2.nperseg:表示单个时间段的长度选择,类似于时间窗的概念,对应滑窗概念里的窗长。
3.noverlap:与前一个时间窗的相重合的时间点的长度,类似于滑窗的概念,其实就是相当于是:
Gap = nperseg - noverlap
4.nfft:是计算离散傅里叶变换的点数。 nfft越大,频域的分辨率就越高(分辨率=fs/nfft),但离瞬时频率就越远;noverlap影响时间轴的分辨率,越接近nfft,分辨率越高,相应的冗余就越多,计算量越大,但计算机只要能承受,问题不大。
5.boundary:扩展参数
boundary:str或None,可选
指定输入信号是否在两端扩展,以及如何生成新值,以使第一个窗口段在第一个输入点上居中。 这具有当所采用的窗函数从零开始时能够重建第一输入点的益处。 有效选项是['偶数','奇数','常数','零',无]。 对于零填充扩展,默认为“零”。即 对于nperseg = 3,[1,2,3,4]扩展为[0,1,2,3,4,0]。
填充:bool,可选
理解:这个参数的意思是说,默认参数是'zero',就是说为了能够让数据的第一个点能够在傅里叶变换时能够处在第一个窗的中间位置,会在第一个位置的前方补0,对称的也会在末尾处相应位置补上0。如果nperseg参数选择等于原始数据的长度,那将会在开始和结尾分别不上约等于0.5倍原始数据长度的0参数,所以才会出现你选择nperseg参数选择等于原始数据的长度,原理上来说应该只有针对一个时间的返回值,但是实际上还是会出现3个时间点返回值,这样就可以解释的通了。经过实际验证,当选择默认值时最中间一列的数值和boundary选择None时的结果一致,也就是说当boundary选择None,且nperseg参数选择等于原始数据的长度时即相当于没有进行窗的滑动,只针对本体做了傅里叶变换。
输出参数
Sxx:表示最终输出的频域分析的结果,每一行代表在某一频率下所有时间窗的结果,每一列对应的是某一个时间窗下的所有频率的结果。
f:表示输出对应的的频率。对应Sxx的每一行。
t:表示输出对应的时间段。对应Sxx的每一列。
网友评论