Writing tables within a for loop
2 views (last 30 days)
Show older comments
Hi all,
I'm trying to make a for loop to process some EEG data. The final output is (1x96) for each participant which is finally working great, however, now I'm having issues writing the data/ looping through the participants. I've attached what the output looks like for one particpant as that is how far I can get. Below is what I'm trying to use unnsuccessfully. Any help is greatly appreciated!
SubjectNum = { '01-02' '01-03' };
resultsFileName = [fullfile(baseDir, 'MATLAB_Output', 'DIVINE.75results.xlsx')];
for k = 1:length(SubjectNum)
.... (whole bunch of steps)
RelativePowerResults = table(ID,channelsLabel,relativeDelta2,relativeTheta2,relativeAlpha2,relativeBeta2,relativeGamma2)
% unstack resulting in (1 row with 96 columns)
RelativePowerResults_Wide = unstack(RelativePowerResults,"relative"+["Alpha2","Delta2","Theta2","Beta2","Gamma2"],'channelsLabel');
if k == 1
% First subject, with variable names
writetable(RelativePowerResults_Wide, resultsFileName, 'Sheet', 1, 'Range', RANGE{k});
else
% For subsequent subjects, write without variable names
writetable(RelativePowerResults_Wide, resultsFileName, 'Sheet', 1, 'Range',RANGE{k}, 'WriteVariableNames', false);
end
0 Comments
Answers (1)
Walter Roberson
on 28 Jan 2025
Moved: Walter Roberson
on 29 Jan 2025
Instead of worrying about the Range arguement, consider the possibility of using 'WriteMode', 'append' which will automatically put the new data at the bottom of all previous data.
2 Comments
dpb
on 29 Jan 2025
Edited: dpb
on 30 Jan 2025
Could cut down code a little by
writetable(RelativePowerResults_Wide,resultsFileName,'Sheet',1,'WriteMode','append', ...
'WriteVariableNames',nSubject==1)
to generate the logic value on the fly instead.
But, the 'WriteMode','append' flag automagically writes the variable names to an empty sheet and then doesn't write the variable names if there are existing data on the sheet so it's superfluous to add it, anyway, and the single form suffices for both first and subsequent writes.
writetable(RelativePowerResults_Wide,resultsFileName,'Sheet',1,'WriteMode','append')
See Also
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!