How do I cut data into segments?
7 次查看(过去 30 天)
显示 更早的评论
I have eeg data in a .bdf file and I need to segment the data using the information in a .txt file.
The text file contains start and stop times in milliseconds .
I must cut fromt1 to t2 and then t2 to t3 and so on..
7 个评论
dpb
2020-4-12
Well, the only .bdf file extension I was aware of was the Adobe one that didn't seem to make any sense...looks as though this is a proprietary EEG file format using 24-bit/3-bytes per sample. That's going to take some processing to read...just a simple fread won't cut it.
There's a very simple and somewhat questionable for general use submittal at the FileExchange
How did you import the data into MATLAB?
As far as the time, there isn't a timestamp in the file; either the duration and number of samples is given or the duration is encoded as "1" in which case the number of samples is to be interpreted as the sample rate.
Either way, you'll need to determine that and then compute how many records are needed to match up. Easy enough if the two have common divisor; maybe not quite so much if time and sample rates don't match precisely.
回答(1 个)
Ameer Hamza
2020-4-12
try something like this
data = rand(80, 512); % random data, replace with data from bdf file
t_intervals = [50 100 300 500 700 900]; % values from your txt file in milliseconds
% solution
fs = 512; % sampling frequency
T = 1/fs*1000; % sampling time in milliseconds
t = 0:T:T*fs-1; % sample time instants
t_intervals = [0 t_intervals t(end)];
data_partition = splitapply(@(x) {x}, data, discretize(t, t_intervals));
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 EEG/MEG/ECoG 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!