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

3 次查看(过去 30 天)
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 个评论
Adam
Adam 2014-8-28
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 2014-8-28
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.

请先登录,再进行评论。

采纳的回答

Jos (10584)
Jos (10584) 2014-8-28
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)

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Structures 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by