How to acces a variable in structure when i only have the string saved into a variable
2 ビュー (過去 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
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.
採用された回答
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 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Structures についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!