Creating a handle.object from a string
7 次查看(过去 30 天)
显示 更早的评论
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 个评论
Stephen23
2019-8-18
编辑:Stephen23
2019-8-18
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:
回答(1 个)
BK
2019-8-18
编辑:BK
2019-8-18
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 个评论
Stephen23
2019-8-18
Rather than creating an extra level of complication by using a cell array, you can simply put the handles into one array:
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graphics Object Programming 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!