I am building a GUI where I am trying to plot an hexagonal matrix and number each hexagon (see attachment).
I used the patch function to plot the hexagons and then used the "text" function with a number array to place the numbers. I want to process now the numeration of the hexagons, and the order of the numbers is important. The problem is that the TEXT object array is reversed when I retrieved it from guihandles.
I reproduced the problem with a simple figure object, since my GUI is too complex:
FIG = figureAXES = axes(FIG)x = [0.25, 0.5, 0.25, 0.5];y = [0.25, 0.25, .5 0.5];str = {'1', '2', '3', '4'};T = text(AXES, x, y, str, 'tag', 'T');T1 = {T.String};h = guihandles(FIG);T2 = {h.T.String};[T1', T2']
The output is:
ans = 4×2 cell array {'1'} {'4'} {'2'} {'3'} {'3'} {'2'} {'4'} {'1'}
I want both columns to go in ascending order. So I updated the handle trying to correct the situation, but no use:
h.T = fliplr(h.T);T3 = {h.T.String};set(h.T, 'Tag', 'T_updated');h2 = guihandles(FIG);T4 = {h2.T_updated.String};[T3', T4']
Output:
ans = 4×2 cell array {'1'} {'4'} {'2'} {'3'} {'3'} {'2'} {'4'} {'1'}
Notice that T3 is reversed compared to T2 as suposed, but then when I retrieve the handle again to T4, it has again the wrong order.
The question is: why is the second column flipped compared to the first? Is there any way to manipulate the handle to correct this, without having to use the fliplr function everytime I retrieve the handle? Also notice that the figure display is unaffected by these operations, so I suspect MATLAB automatically reorders the TEXT object array.
Thanks for any insight.
Best Answer