How to selectively save the names and values of some workspace variables to a CSV file?

6 views (last 30 days)
Consider the following
a = 3; b=7; c=5; d=9;
save('test.mat')
data = load('test.mat');
toSave = { 'b' ; 'c' };
writecell( horzcat( toSave , <missing code> ) ,'myfile.csv')
what should be the <missing code> in order to have the content of myfile.csv to be
b , 7
c , 5
?

Accepted Answer

Rik
Rik on 15 Sep 2020
This should do the trick. If the variables aren't scalars the results might not be what you want.
a = 3; b=7; c=5; d=9;
save('test.mat')
data = load('test.mat');
toSave = { 'b' ; 'c' };
s=struct;
for n=1:numel(toSave)
s.(toSave{n})=data.(toSave{n});
end
writecell( horzcat( toSave , struct2cell(s) ) ,'myfile.csv')
  3 Comments

Sign in to comment.

More Answers (1)

Diaa
Diaa on 15 Sep 2020
Thanks to the inspiring answer of @Rik, I found the following solution without the need to use for loop
a = 3; b=7; c=5; d=9;
save('test.mat')
data = load('test.mat');
toSave = { 'b' ; 'c' };
writecell(horzcat(toSave, cellfun( @(C) data.(C),toSave,'UniformOutput',false)),'myfile.csv')
  2 Comments
Diaa
Diaa on 15 Sep 2020
You are right, but I can't resist minimizing the code despite knowing it is not the best practice :)

Sign in to comment.

Categories

Find more on Large Files and Big Data in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!