Evaluate string as structure

2 ビュー (過去 30 日間)
Rob L
Rob L 2019 年 10 月 1 日
回答済み: Rob L 2019 年 10 月 1 日
I wish to load a structure based on a string input and copy the contents to a new structure. I can do this with eval, but would prefer not to.
For example:
user_string = 'structure_name';
load( user_string )
new_data = eval( user_string );
The structure 'structure_name' has several fields and is saved as a .mat file.
Using (user_string) to evaluate the structure isn't an option

採用された回答

Stephen23
Stephen23 2019 年 10 月 1 日
編集済み: Stephen23 2019 年 10 月 1 日
The most important thing is to always load into an output variable, then your task is easy:
N = 'structure_name';
S = load(N); % load into an output variable (a scalar structure)
new_data = S.(N);
Or, if there is exactly one variable in the .mat file:
C = struct2cell(S);
new_data = C{1};
  4 件のコメント
Rob L
Rob L 2019 年 10 月 1 日
The problem isn't with your solution, but more the data I have to access.
If the loaded data is of the form
structure_name.field_name_1
structure_name.field_name_2
When I load it in to the new variable I have
S.structure_name.field_name_1
S.structure_name.field_name_2
Whereas what I want is
S.field_name_1
S.field_name_2
As I said, easily done but would be neater if it could be donw at the load stage.
Stephen23
Stephen23 2019 年 10 月 1 日
編集済み: Stephen23 2019 年 10 月 1 日
"As I said, easily done but would be neater if it could be donw at the load stage."
Sure, it might be neat.
But it isn't possible (for the reason I explained in my previous comment).
"When I load it in to the new variable I have ..."
Which is why I showed you two methods for removing the "superfluous structure level" without awful eval. However you seem to be only looking at the first part of my code (i.e. load into a scalar structure) and not at those two methods.
"The problem isn't with your solution, but more the data I have to access."
I don't see why your data is a problem at all. The similar examples I tried worked for me.
"Whereas what I want is"
Sure, and that is exactly what my code gives you.

サインインしてコメントする。

その他の回答 (1 件)

Rob L
Rob L 2019 年 10 月 1 日
Thanks for your help.

カテゴリ

Help Center および File ExchangeStartup and Shutdown についてさらに検索

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by