How to save the value, a string, of a variable as a variable name of an array ?
8 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hello,
I have a variable and a double array :
s_fieldnames = 'aaa';
a_nums = [1, 2, 3, 4, 5, 6];
I would like to save this into a mat file. To be clearer, i would like to have a mat file which contains :
aaa = [1, 2, 3, 4, 5, 6];
It means I would like to have the value of s_fieldnames as the name of the double array. So that if i look into my file I will have aaa which contains the double array.
After that I want to use the function save.
save('filename', ...);
Thank you Adrien
0 Commenti
Risposta accettata
Orion
il 4 Nov 2014
Hi,
something like
s_fieldnames = 'aaa';
a_nums = [1, 2, 3, 4, 5, 6];
% create the variable aaa containing the values of a_nums
eval([s_fieldnames '=a_nums;']);
% save it in a mat file
save('filename',s_fieldnames)
Più risposte (1)
Adam
il 4 Nov 2014
Modificato: Adam
il 4 Nov 2014
s_fieldnames = 'aaa';
a_nums = [1, 2, 3, 4, 5, 6];
temp.( s_fieldnames ) = a_nums;
save( 'filename', '-struct', 'temp' );
Try to avoid ever creating variables in your workspace from a string. It isn't a good way to go about things at all even though it is something so many people (myself included) have wanted to do before they know better!
This method allows you to use the inbuilt method for generating structure fieldnames from variables, then save to a mat file with the '-struct' option to get rid of the struct on saving. Judging by the naming of your variable s_fieldnames it was intended to be a structure field name rather than a raw variable anyway!
Note: If s_fieldnames happens to live up to its pluralised name and contain multiple variables you will have to use cellfun or a for loop to do this for each name in the cell array of names.
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!