众所周知,傅里叶变换的快速算法FFT可以用来对信号的频域特征进行分析,然而,FFT仅能用于平稳信号的分析,对于非平稳信号,则需要采用短时傅里叶变换(STFT)进行分析。
对于非平稳信号,短时傅里叶变换所采用的策略是在信号上面加窗,一般是hamming窗,当然也可以是其它类型的窗函数,加窗之后的信号被分割为一组短长度子序列,子序列可以近似的看为平稳序列,可以用傅里叶变换的方式去进行分析,这也是短时傅里叶变换的精髓所在。
用STFT进行脑电信号分析一般有两种思路,第一种是用STFT来分离EEG信号的波段,从而求得每一个波段的能量作为特征(alpha、beta、theta、gamma、deta)。第二种是利用STFT计算功率谱密度作为特征,功率谱密度(PSD)特征可以针对整个信号子序列也可以针对子序列中特定的波段来计算。这两种思路中,第二种思路用的比较广,下面对其进行说明。
matlab中进行STFT的函数为spectrogram,计算功率谱密度(PSD)时使用如下格式:
[
S
,
F
,
T
,
P
]
=
s
p
e
c
t
r
o
g
r
a
m
(
x
,
w
i
n
d
o
w
,
n
o
v
e
r
l
a
p
,
n
f
f
t
,
f
s
)
其中,S为输入信号x的短时傅里叶变换,F为频率向量,T为时间向量,P为功率谱密度矩阵,x为输入信号,window为时间窗,noverlap为overlap的点数,如果为0就是没有overlap,nfft为DFT的点数,fs为采样频率。其中,F向量的维度和P的行数一致,可以根据F向量来选取特定波段的PSD,还可以将alpha、beta、theta、gamma、deta这几个波段分别分为几个窄波段,提取窄带PSD。