| 
             实际上,由于计算机无法处理连续信号,因此 
原始信号在特定位置采样到一组离散数据点 
采样次数。采样速度称为采样率。例如 
我们的大多数电路板使用250Hz的采样率,这意味着250个数据点将 
,两个相邻数据点之间的间隔将 
be 1/250秒=4毫秒。采样过程如下所示。 
由于原始数据是离散的,FFT的输出也将是一组 
离散数据点如下图所示。如果FFT采用L采样 
采样率为Fs时的数据点(称为长度-L FFT),然后生成L 
数据点或L频率箱,其中第i个箱(i从0开始)具有 
i*Fs/L的中心频率,在频谱中与Fs/L一样宽。通常是L 
是二的幂。由于原始FFT幅度谱是对称的,因此 
然后折叠成单侧频谱以显示真实振幅。新的 
频谱的频率范围为0~Fs/2,从信号中心开始 
第0个到第1/2个箱子,总共覆盖1/2+1个箱子。 
在浏览器专业版中打开你是开发人员吗?试用HTML到PDF API pdfcrowd。通用域名格式 
如何在OpenBCI GUI中读取FFT图? 
在GUI中,我们看到的FFT图基本上是 
经过处理的信号(稍后在高级部分中解释),FFT的结果是 
在dB空间中随时间平滑。 
那么,如何读取给定的振幅谱?例如,如果您看到 
给定如下图所示的FFT幅度谱,可以在 
约12 Hz,约0.87 uV。这意味着原始信号是 
主要由以12Hz左右的频率振动的正弦波组成- 
0.87V至+0.87V。 
事实上,原始信号是振幅为1.0V、频率为12Hz的正弦波 
在浏览器专业版中打开你是开发人员吗?试用HTML到PDF API pdfcrowd.com 
 
 
 
 
 
频率这种差异是在采样数据不一致时产生的 
具有足够的代表性,则FFT将假设较小的幅度扩展 
围绕频谱中的实际频率,并降低峰值振幅。 
这种现象称为频谱泄漏。 
为了处理频谱泄漏,引入了窗口函数。图像 
下面显示了理想的傅立叶变换、无窗FFT和FFT 
应用汉明窗口后。你可以看到,虽然峰值振幅是 
在加窗后,频谱泄漏甚至衰减得更厉害。(更好 
如果应用能量补偿) 
随着时间的推移变得平滑? 
由于EEG数据buff通常每1/5秒刷新一次,FFT计算 
最新的数据集也是每1/5秒一次。然后对FFT值进行平滑处理 
dB当前FFT值和最后一个FFT值之间的空间。平滑的 
然后使用0-1之间的系数。因子是指前一个变量的权重 
一组FFT值,因此因子越高,FFT越平滑。 
钥匙: 
1-1该峰值的频率约为10Hz,其振幅约为2 
紫外线。 
在浏览器专业版中打开你是开发人员吗?试用HTML到PDF API pdfcrowd.com 
1-2因为采样率意味着一秒钟内有多少个数据点 
必修的。在这种情况下,两个相邻数据点之间的时间跨度为1/250秒。 
长度为256的FFT计算256个数据点。因此,时间跨度为256 
数据点为256*1/250秒=1.024秒=1024毫秒。 
1-3,因为0Hz是第0个箱子的中心频率,250 Hz是中心频率 
第256格的频率,第25格的中心频率将为25*250/256 
=24.41 Hz。由于20 Hz的可能指数为20*256/250=20.48,因此应 
属于第20个箱子。(第20个箱子的中心频率为19.53 
第21个箱子的频率为20.5,两个箱子之间的边界为19.53+20.5= 
20.015Hz,因此20Hz落在第20个箱子的右半部分)。 
1-4减少频谱泄漏的影响。 
1-5它通常每1/5秒刷新一次。使绘图更平滑 
需要平滑因子,例如0.9。 
Lv2(中间):在GUI中使用FFT 
以下任务是本节的目标。如果你能回答所有的问题, 
您可以跳过本节,继续下一节。 
//-------开始任务#2------- 
任务2-1:起点 
在GUI中有一个方便的地方来存放自己的FFT代码? 
任务2-2:阿尔法峰 
如何编写一段代码来查找 
α波段,如果α波段定义为7-13 Hz? 
在浏览器专业版中打开你是开发人员吗?试用HTML到PDF API pdfcrowd.com 
任务2-3:信息流 
从原始EEG数据到最终平滑FFT的过程是什么 
? 
//-------任务结束#2------- 
在GUI中设置代码: 
OpenBCI GUI使用Minim库计算FFT。 
Nfft注册FFT的长度,fftBuff[]保存最新的FFT数据 
从每个通道。 
OpenBCI板的采样率可以通过调用 
openBCI.get\u fs\u Hz()。Minim要求该采样率转换bin 
索引到中心频率。 
A.然后为FFT计算指定一个汉明窗口(以减少频谱 
泄漏)。 
如果你想用FFT创造一些有趣的东西,你的出发点是 
下面是代码主干。之后,您可以通过搜索FFT\u freq\u Hz来找到它 
检查OpenBCI GUI中的“所有选项卡”。 
在浏览器专业版中打开你是开发人员吗?试用HTML到PDF API pdfcrowd.com 
外回路通过所有可用通道,内回路通过 
通过所有有效的FFT箱。 
fftData(与fftBuff相同)保存nchan的单侧振幅谱 
数据通道,每个通道有1/2+1个FFT箱。此数量的箱子 
可以通过Minim提供的.specSize()函数访问。 
然后在循环中,这两个值是您需要的: 
fftData[Ichan]。indexToFreq(Ibin)是Minim库中的一个函数。它回来了 
通过查找其索引得到FFT箱的中心频率(FFT图中的x值)。 
fftData[Ichan]。getBand(Ibin)是Minim库中的一个函数。它返回 
FFT箱在uV中的振幅。 
钥匙: 
2-1下载OpenBCI GUI的副本。打开编辑->查找,选中“全部” 
选项卡”,键入“FFT\u freq\u Hz”。您应该能够找到所需的 
密码 
在浏览器专业版中打开你是开发人员吗?试用HTML到PDF API pdfcrowd.com 
2-2代码示例(绿线是添加的行): 
2-3在EEG buff内传递最新的256点原始EEG数据,a 
计算前使用汉明窗,然后使用单边FFT频谱 
计算并存储在fftBuff[]内,然后对fftBuff[]值进行平滑处理 
具有以前的fftBuff[]值。 
在浏览器专业版中打开你是开发人员吗?试用HTML到PDF API pdfcrowd.com 
采样原始uV->汉明窗口->fftBuff[]->平滑fftBuff[] 
3级(高级):更详细 
这里没有测验。如果你喜欢,请阅读 
关于GUI中FFT的整个故事: 
导入最小库,初始化FFT: 
计算FFT并转换为单波段: 
在浏览器专业版中打开你是开发人员吗?试用HTML到PDF API pdfcrowd.com 
在dB空间中平滑: 
复制GUI过程的Matlab版本 
概述: 
(较旧版本的GUI根据原始数据计算FFT,较新版本将 
对滤波后的数据应用FFT。此处使用滤波脑电图) 
在浏览器专业版中打开你是开发人员吗?试用HTML到PDF API pdfcrowd.com 
加窗和计算单边FFT幅度谱: 
1、间隔定义为缓冲区自身刷新的速度。这里有50个数据点 
250Hz采样率表示1/5秒。 
2、为了减少频谱泄漏,对原稿应用汉明窗口 
信号:temp\u han=temp\u dat.*hamming(L); 
3.然后,计算FFT幅度的方程为:temp\u mag=abs(FFT(temp\u han)); 
4、为了将其转换为单边频谱,抛出FFT频谱的右半部分, 
然后将除第一个(DC)和最后一个(在奈奎斯特频率下)外的任何点乘以 
两个用于校正振幅:temp\u mag=temp\u mag(1:L/2+1);temp\u mag(2:end-1)= 
2*temp\u mag(2:end-1); 
dB空间中的平滑: 
在浏览器专业版中打开你是开发人员吗?试用HTML到PDF API pdfcrowd.com 
上述Matlab代码将很快提供。              |