How to call a MATLAB variable loaded in from a .mat file when you don't know the name of the variable beforehand
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Joshua Prince
el 23 de En. de 2024
Comentada: Joshua Prince
el 24 de En. de 2024
I have a .mat file which contains a variable in it I want to perform some calculations on. The catch is I don't know the variable name beforehand.
I can load the variable just fine into my workspace using the who('-file',filepath) function to find the variable name, then the load() function to load the variable in (the .mat file only contains one variable, so I can just use the first entry in the variables_names array).
data=[1;2;3]; %generate data (real data is 4310x4310x150 matrix)
filename='matfile.mat'; %assign filename
save(filename,'data','-v7.3') %save data as .mat file (since actual data in code is large, using v7.3)
variable_names=who('-file',filename); %Grab the variable names in the .mat file
load(filename,variable_names{1}); %Using the only variable name in the .mat file, grab that variable.
Now, how do I perform calculations on the "data" file which can been loaded into be workspace? I can't call it directly because I don't know the name of the file beforehand. The easiest way would be to use eval():
new_data=eval(variable_names{1});
But that crashes my code (as all of the online forums told me it might). So, how do I assign the original values in the "data" array to this new variable "new data".
In my real code the data is generated in a compeltely different script than the data analysis is performed, so I can't just call the original "data" variable. Globals aren't really an option.
0 comentarios
Respuesta aceptada
Más respuestas (1)
Voss
el 23 de En. de 2024
variable_names = who('-file',filename);
S = load(filename,variable_names{1});
new_data = S.(variable_names{1});
2 comentarios
Walter Roberson
el 23 de En. de 2024
S = load(filename,variable_names{1});
variable_names = fieldnames(S);
new_data = S.(variable_names{1});
Ver también
Categorías
Más información sobre Variables 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!