Draw edf plots using "for loop"
3 views (last 30 days)
Show older comments
OK so this question is continuing my yesterday's question about accessing the edf table using for loop.
I have a table like this:
tt = edfread('example.edf')
then I did several edf info extractions:
info = edfinfo('example.edf');
fs = info.NumSamples/seconds(info.DataRecordDuration);
after that I did the plot for the first record of the first signal, which refers to "EEG 0 sec" data:
recnum = 1;
signum = 1;
t = (0:info.NumSamples(signum)-1)/fs(signum);
y = tt.(signum){recnum};
plot(t,y)
or this one for the fifth record of the second signal, which refers to "EEG2 40 sec":
recnum = 5;
signum = 2;
t = (0:info.NumSamples(signum)-1)/fs(signum);
y = tt.(signum){recnum};
plot(t,y)
but for my case I would like to extract and plot all data:
- "ECG" from 0 sec up to 50 sec
- "ECG2" from 0 sec to 50 sec as well.
And for this case I would like to use "for loop" method. I tried to figure out what works in the loop but I totally have no idea. Can you help me to figure it out? Thank you
6 Comments
Walter Roberson
on 16 Apr 2023
According to your table, you have samples for each of 1280 different channels, with the samples taken every 10 seconds. According to your table, you do not (for example) have any data at time 1 second, or 2 seconds, and so on -- only at 0 seconds,10 seconds, 20 seconds, and so on.
Accepted Answer
VBBV
on 15 Apr 2023
Edited: VBBV
on 15 Apr 2023
"Data" will likely only kept the last record of the signals, which are in the "50 sec",
Please look at the below code where whole data from 0 sec to 50 sec is stored.
tt = edfread('example.edf');
tt = timetable2table(tt);
tt.Properties.VariableNames = {'Time','ECG1','ECG2'};
%%% for large number of variables %%%
% fprintf(repmat('%s Data',1,100) \n', string(tt.Properties.VariableNames(2:end)))
fprintf('%s Data %s Data \n', string(tt.Properties.VariableNames(2:end)))
for k = 1:length(tt.ECG1)
% fprintf('at %s is\n',tt.Time(k))
% access all data from table without inputting one by one
Data{k} = cell2mat(table2cell(tt(k,2:end))) ;
end
T = string(tt.Properties.VariableNames(2:end))
%Rearrange data
Data = cell2mat(Data(1:end).');
for J = 1:length(string(tt.Properties.VariableNames(2:end)))
subplot(length(string(tt.Properties.VariableNames(2:end))),1,J)
plot(Data(:,J));title(T(J))
end
% store variable data in distinct matrices requires as many variables as
% Variablenames in table
D1 = Data(:,1) % All data of ECG from 0 sec to 50 sec
D2 = Data(:,2) % All data of ECG2 from 0 sec to 50 sec
Could you tell why you want to store data in distinct variables for each table variable ?
More Answers (0)
See Also
Categories
Find more on Parametric Spectral Estimation 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!