Best way to rename a loaded variable?
329 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Alec Nagel
el 27 de Nov. de 2012
Comentada: Steven Lord
el 17 de Mzo. de 2022
Say that I have a .mat file that contains a variable, and I need to load this variable and give it a different name. Is there any other (/better) way to do this than:
load(myFile, myVar)
eval(['myNewname = ' myVar '; clear ' myVar])
?
2 comentarios
Jan
el 27 de Nov. de 2012
Where does this EVAL idea come from? Did you find EVAL in the documentation or did you see it in an example?
I ask, because it is such frequently suggested to avoid EVAL in this and other Matlab forums for so many years, that I actually expect, that this method should be extinct already.
Respuesta aceptada
Matt Fig
el 27 de Nov. de 2012
Editada: Matt Fig
el 27 de Nov. de 2012
Say you have the name of your variable:
VAR = 'S';
Now you want to load that variable, but with the name T. This method follows the general rule of thumb to avoid 'poofing' variables into the workspace.
T = load('myfile',VAR); % Function output form of LOAD
T = T.(VAR)
3 comentarios
Más respuestas (2)
Image Analyst
el 18 de Feb. de 2015
I'd do it this way:
storedStructure = load(myFile, 'myVar'); % Load in ONLY the myVar variable.
myNewname = storedStructure.myVar; % Assign it to a new variable with different name.
clear('storedStructure'); % If it's really not needed any longer.
Same net effect, it just uses the names Alec gave, and avoids dynamic structure fields, which are a bit advanced for beginners and not necessary here if you know the actual name.
0 comentarios
Stefano Petrò
el 17 de Mzo. de 2022
A way to do this in a single command is
myNewname = getfield(load(myFile,myVar),myVar);
1 comentario
Steven Lord
el 17 de Mzo. de 2022
myVar = 'cdate';
C = load('census.mat', myVar).(myVar)
Ver también
Categorías
Más información sobre Matrix Indexing 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!