我有一个非恒定采样频率的EEG信号,如下图所示。

我试图对脑电图信号进行重采样,以达到恒定的采样频率,以便更好地用于进一步的分析。

现在,我把信号分解成1秒的时间框架,然后用重采样函数重采样,得到一个恒定的采样频率。然而,由此产生的脑电图信号似乎是不正确的,与奇怪的波动在连接点。

我认为我做得不对,所以如果可能的话,有人能给我一个更好的建议或者指出正确的方向吗?谢谢。
现有代码(在一个执行循环中执行,每个循环在1秒内遍历整个脑电信号):
% Calculate resampling factors p & q
% Fs(currSecond) gives the number of samples within that time frame of 1 second
% nFS is the target sampling frequency (constant) to be achieved for each time frame
[p, q] = rat(nFs/Fs(currSecond), 0.0000000001);
% Calculate the end of data to be resampled
endSample = currSample + Fs(currSecond) - 1;
% Resample EEG data
EEG_Data_Resampled = ...
resample(EEG_Data_Trimmed(currSample : endSample, 1:4), p, q, 0);
% Store resampled EEG data
nCombinedData(startRow : endRow, 2:5) = num2cell(EEG_Data_Resampled);
% Update starting sample for next iteration
currSample = currSample + Fs(currSecond);编辑:将resample函数更改为使用n值0
% If you let n = 0, resample performs a nearest-neighbor interpolation
% Resample EEG data
EEG_Data_Resampled = ...
resample(EEG_Data_Trimmed(currSample : endSample, 1:4), p, q, 0);它似乎给了我更好的重放数据,但我仍然不确定原始脑电信号的特征是否被保留为重放版本。

发布于 2014-12-18 12:25:20
重采样只会从一个固定抽样率转换到另一个固定抽样率。要从非恒定采样率重新采样,您必须知道每个原始样本的时间。如果您知道这些时间为t_orig_sec,则可以通过interp1命令将原始信号插入到新的时间基(t_new_sec)中。您使用的插值类型(linear、spline等)将影响插值过程产生的失真或谐波类型。
我推荐这样的东西:
%given: t_orig_sec and eeg_data
%interpolate to a new, fixed sample rate: fs
fs = 250; %new sample rate in Hz
dt_sec = 1/fs;
t_new_sec = [t_orig_sec(1):dt_sec:t_orig_sec(end)] %new time vector
new_eeg_data = interp1(t_orig_sec, eeg_data, t_new_sec, 'spline');更大的问题是,你的脑电信号是否真的被不均匀的采样。几乎每一个数据采集系统都意味着以恒定的速率进行连续信号(如EEG)采样。如果这些数据没有以固定速率到达您的PC,可能是由于您的数据采集系统延迟将数据推出串行通信线路,或者是由于您的操作系统为接收到的串行通信服务的延迟造成的。
在重采样您的信号之前,我强烈建议您确认您的系统确实是不均匀的采样。我会注入一个已知的,恒定频率的信号到你的脑电图系统(你可能需要把你的注入信号与电阻分开,以获得一个更低的电压)。然后,我会看一下为你注入的信号记录的数据。假设系统具有恒定的采样速率,并查看记录到的信号的谱图。如果记录的信号的频率是稳定的,那么你的脑电图系统是正确的记录在一个恒定的采样率。如果记录的信号的频率变化,那么您将确认您的系统有一个不同的采样率。
如果变化了,你就有理由重新插入你的信号。要进行再验证,您将需要一个非常好的“时钟”来告诉您何时每个样品已经到达。我相当肯定,内置在PC上的时钟不会给你提供精确的时间戳,你的need...the时钟值可能看起来有很好的精度(即很多数字),但这并不意味着它是准确的,因为它给你准确的时间,立即到达每一个样本。我觉得里面有很大的可变性。这种可变性可能意味着您的重新插值将损害信号和它将修复信号一样多。
https://stackoverflow.com/questions/27538874
复制相似问题