Effacer les filtres
Effacer les filtres

Creating variable whose name is part of a string

1 vue (au cours des 30 derniers jours)
Dina Irofti
Dina Irofti le 13 Juin 2013
I have a .mat file as an input for my function and I know that it contains a struct, but I don't know exactly the name of that struct (is different from file to file).
>> s = load('myFile');
>> name = fieldnames(s)
name =
unknown
where unknown depends on the .mat file input I have.
How can I access s.unknown.X? (I know for sure that unknown have an X and Y field, whatever the input might be)

Réponse acceptée

Robert Cumming
Robert Cumming le 13 Juin 2013
Basically - dont use eval - its bad! use dynamic fieldnames instead! :)
  4 commentaires
Jan
Jan le 13 Juin 2013
I agree with Robert: Do not create variables dynamically. It would work, but increase the complexity of the code without any real benefit, slows down Matlab by impeding the JIT acceleration, and makes debugging much harder.
Dina Irofti
Dina Irofti le 13 Juin 2013
You are right, it is better to use dynamic fieldnames. My solution is:
s = load('myFile');
unknown = fieldnames(s);
unknown = unknown{1};
Now I can access
s.(unknown).X

Connectez-vous pour commenter.

Plus de réponses (1)

Vishal Rane
Vishal Rane le 13 Juin 2013
You could try this:
eval([name, ' = 10'])
  1 commentaire
Dina Irofti
Dina Irofti le 13 Juin 2013
I'd rather didn't use eval()

Connectez-vous pour commenter.

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