How to call a MATLAB variable loaded in from a .mat file when you don't know the name of the variable beforehand
5 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
更多回答(1 个)
Voss
2024-1-23
variable_names = who('-file',filename);
S = load(filename,variable_names{1});
new_data = S.(variable_names{1});
2 个评论
Walter Roberson
2024-1-23
S = load(filename,variable_names{1});
variable_names = fieldnames(S);
new_data = S.(variable_names{1});
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!