Creating a handle.object from a string
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I am trying to specify 1 of 19 axes in a GUI in a for loop. Depending on the data (randomly organized) it needs to be sorted to its appropriate axes. My sorting is working but I do not know how to reference the correct handle.axes in the loop. In my case they are axes(handle.tileN); N = 1:19.
axes(handles.tileN);
image(TEX)
axis off
axis image
I generate a string for each handle;
use = strcat('handle.tile',N)
This generates the correct string 'handle.tile1' if n=1; but I can not figure out how to then make this the correct handle. How do I make axes(handle.tileN); N = 1:19 correctly call objects?
1 commentaire
Stephen23
le 18 Août 2019
Modifié(e) : Stephen23
le 18 Août 2019
The simplest and best solution is to change your code slightly, and use an array of handles:
H = gobjects(1,19); % or nan(...) for pre R2014b versions.
for k = 1:19
H(k) = axes(...)
end
and then you can trivially use indexing to access each axes.
"use = strcat('handle.tile',N) This generates the correct string 'handle.tile1' if n=1..."
I would be very surprised if that worked. It certainly doesn't when I try it:
Réponses (1)
BK
le 18 Août 2019
Modifié(e) : BK
le 18 Août 2019
Likely there is a more elegant solution, but the following worked for me on a similar problem. Create a cell array where elements are handle objects (not the string names), then loop through as needed.
ax = {handles.axes1, handles.axes2,...};
for idx = 1:max_idx
imagesc(ax{idx},A);
ax{idx}.XAxis.Visible = 'off';
end
1 commentaire
Stephen23
le 18 Août 2019
Rather than creating an extra level of complication by using a cell array, you can simply put the handles into one array:
Voir également
Catégories
En savoir plus sur Graphics Object Programming 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!