How may I dynamically refer to a loaded mat array to modify or save it

2 visualizaciones (últimos 30 días)
Will Kinsman
Will Kinsman el 11 de Dic. de 2015
Editada: Stephen23 el 19 de Jun. de 2019
I am trying to write a simple piece of code where I provide a function with a list name (as a string) and a new string to add to the list (also a string). It will then load that library, add it to the list, sort it, and re-save it. I seem to be getting stuck how to dynamically reference the list name. I desire to do this so that I may add new entries to many other lists I have on my computer quickly with the console.
function addtolist(list,string)
load([list '.mat']); %%%this line works fine
list = vertcat([list '.mat'],string); %%%this line is incorrect
list = sort(list);
save([list '.mat']); %%%this line also incorrectly references the cultures list
end
INPUT: addtolist('Cultures','Armenian') OUTPUT: Nothing (old file is overwritten with line of data)
Thanks in advance for any help here,
William

Respuestas (3)

Walter Roberson
Walter Roberson el 11 de Dic. de 2015
Editada: Walter Roberson el 11 de Dic. de 2015
In particular use
filename = [list '.mat']
data = load(filename);
data.(list) = sort([data.(list); {string}]);
save(filename, 'data', '-struct');
I explicitly used cell array form as vertcat() of a char array does not work if the new item is not the same width but there is no problem with cell arrays.

Stephen23
Stephen23 el 11 de Dic. de 2015
Editada: Stephen23 el 19 de Jun. de 2019

Will Kinsman
Will Kinsman el 11 de Dic. de 2015
Editada: Will Kinsman el 11 de Dic. de 2015
The code ended up looking like this and used the eval() function
function addtolist(list,string)
filename = [list '.mat'];
data = load(filename);
data = sort([data.(list); {string}]);
eval([list '= data']);
save(list,list);
I do understand the danger of using dynamically referenced variables, however this is only 5 lines of code and is meant to be used as quick tool entirely independent of all other code. Thank you for the help!
  1 comentario
Stephen23
Stephen23 el 11 de Dic. de 2015
Editada: Stephen23 el 12 de Dic. de 2015
Hopefully no one will believe that it is a good solution. Please read the better answers below.

Iniciar sesión para comentar.

Categorías

Más información sobre Cell Arrays en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by