How do I efficiently edit GUIDE item handles in a loop?
Infos
Cette question est clôturée. Rouvrir pour modifier ou répondre.
Afficher commentaires plus anciens
I have a program written using GUIDE (yes, I still use it), and i'm trying to modify the properties a series of objects named Sector1, Sector 2... SectorN in a loop. The problem is, to do this I'm currently using eval (expression), such as:
expression = ['set(handles.Sector',num2str(i),',''Position'', pos1);'];
eval(expresion);
But it runs terribly slow, as the recommendations here state. I'm wondering if there is a workaround to avoid using eval while still being able to call the objects in a loop. Thanks.
3 commentaires
Rik
le 21 Fév 2019
Since you have the sector object handles in your handles struct, you can use that to get the list of fieldnames. Then you can use a normal loop, which should speed up your code.
Of course a better solution is not to use numbered variables in the first place. I would also advise not to use GUIDE, but that is my personal preference.
"I'm wondering if there is a workaround to avoid using eval while still being able to call the objects in a loop"
Just access them directly in handles using dynamic fieldnames:
Remember that putting numbers into variable names is a sign that you are doing something wrong... as you are finding out, it forces you into writing slow, complex, buggy code that is hard to debug. Read this to know why:
Using indexing would be the most efficient solution and is what you should have used.
Personally I would also avoid GUIDE. Ultimately it is simpler to write your own code.
Carlo Cavaliere Ballesta
le 22 Fév 2019
Réponses (0)
Cette question est clôturée.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!