How to acces a variable in structure when i only have the string saved into a variable

4 views (last 30 days)
Hello,
Here is my code :
[filename, pathname] = uigetfile('*.mat', 'Select the MATLAB mat file');
a = load(filename);
I'm asking a file to the user. And then loading the array of the coresponding file into a. But it is saved as a Structure. a is a Structure that contained a variable named by the name of the filename. Which is itself containing the array. Am I right ? After that I want to plot it.
plot(a.??);
The problem is, that i can't right a.filename. Cause filename is not the real name, but the name of the varaible that contain the string I want.
I hope you'll understand my problem.
Thank you in advance.
  2 Comments
Adam
Adam on 28 Aug 2014
Are you expecting the user to have saved a specifically named variable in their .mat file?
Otherwise there could be any number of variables being loaded in when you load the file.
Adrien
Adrien on 28 Aug 2014
Yes. Is the mat file not like a structure ? You can save for example :
a = load ('****.mat')
Than :
a =
aaa: [1x100 double]
bbb: [1x100 double]
How can i access for example aaa without knowing aaa. But only the name of the file and the position into the file. I mean aaa is now 1.

Sign in to comment.

Accepted Answer

Jos (10584)
Jos (10584) on 28 Aug 2014
This would be an approach
[filename, pathname] = uigetfile('*.mat', 'Select the MATLAB mat file');
tmp = load(filename);
fn = fieldnames(tmp) ;
X = tmp.(fn{1}) ; % simply take the first (and may be only) variable)
plot(X) % use X in the remainder of the code
or if you know that you want to load a specific variable from the matlfile
tmp = load(filename)
varname = 'MyDataVar' ;
if ~isfield(tmp, varname)
error('The file %s does not contain the variable "%s",filename, varname)
else
X = tmp.(varname) ;
end
and this might also do the trick:
tmp = load(filename,varname)

More Answers (0)

Categories

Find more on Structures in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!