class of returns from get() with 1 vs. mutliple handles
1 view (last 30 days)
Show older comments
Get(h,'parameter') always returns a cell if h contains more than one handle, but if h is a single handle it returns a value of the class of the parameter.
The result is that a special case needs to be written to handle the return if h is of length 1. Is there a way to avoid this so that get always returns a cell even if it is of length one?
Example: >> for i=1:5;h(i)=line(i,i);set(h(i),'userdata',x);end
>> class(get(h,'userdata')) ans = cell
>> class(get(h(i),'userdata')) ans = double
0 Comments
Accepted Answer
Matt Fig
on 7 Mar 2011
To force a cell array, use:
plot(1:10,1:10,1:12,1:12); % Example.
H = get(gca,'children') % Multiple handles.
C1 = get(H,{'linestyle'}) % A cell array, 2-by-1.
C2 = get(H(1),{'linestyle'}) % A cell array, 1-by-1.
2 Comments
More Answers (2)
Fangjun Jiang
on 7 Mar 2011
I don't have an answer but I want to second your opinion. I found this inconvenient many times. What I usually do is to add a line to process the result.
if ~iscell(answer),answer={answer};end
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!