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

1 vue (au cours des 30 derniers jours)
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 commentaires
Adam
Adam le 28 Août 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 le 28 Août 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.

Connectez-vous pour commenter.

Réponse acceptée

Jos (10584)
Jos (10584) le 28 Août 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)

Plus de réponses (0)

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by