class of returns from get() with 1 vs. mutliple handles

1 vue (au cours des 30 derniers jours)
Peter
Peter le 7 Mar 2011
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

Réponse acceptée

Matt Fig
Matt Fig le 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 commentaires
Fangjun Jiang
Fangjun Jiang le 7 Mar 2011
Thanks, Matt! Good to know your trick.
Brett Shoelson
Brett Shoelson le 8 Mar 2011
Very nice, Matt!

Connectez-vous pour commenter.

Plus de réponses (2)

Fangjun Jiang
Fangjun Jiang le 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

Peter
Peter le 8 Mar 2011
Thanks - that's neat solution.

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by