How do I cut data into segments?
Show older comments
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 Comments
Ameer Hamza
on 12 Apr 2020
How is the data from bdf file available in MATLAB? Do you have the data a matrix? How do you want to partition the data?
Nikki Larsen
on 12 Apr 2020
Ameer Hamza
on 12 Apr 2020
Does rows represent time samples or columns. Have you loaded the data from txt file? What is the sample rate?
Nikki Larsen
on 12 Apr 2020
Image Analyst
on 12 Apr 2020
Nikki - I think people are still waiting for you to upload the file. How else can we effectively work with it if we don't have it?
dpb
on 12 Apr 2020
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.
Nikki Larsen
on 13 Apr 2020
Answers (1)
Ameer Hamza
on 12 Apr 2020
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));
Categories
Find more on EEG/MEG/ECoG in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!