Using cellfun() to set cell array of graphic objects 'Visible' Property to 'off'

I have a 1xn cell array of graphic objects-- currently I have the logic in a for-loop
for j = 1:numel(uis)
uis{j}.Visible = 'off';
end
I've always had trouble with the syntax for the cellfun function...I know this is wrong, but I'm trying to do something like:
cellfun(@set,uis,'Visible','off')
*note: found out here:
that for loops are faster than cellfun(), but I would like to know the answer to my question anyway :)

 Accepted Answer

You will need to define an anonymous function like this:
cellfun(@(g)set(g,'Visible','off'),your_cell_array_of_handles)
Note that you could easily have put all of the handles into one handle array, in which case your code is much simpler and more efficient:
set(array_of_handles,'Visible','off')

4 Comments

Of course omitting cellfun is the best option: lean and efficient. +1
In the case of the OP:
set([uis{:}], 'Visible', 'off')
Did not know you can concatenate uis{:} in that way with [], this will be very useful knowledge-- thanks Jan!

Sign in to comment.

More Answers (0)

Products

Asked:

on 12 Feb 2019

Commented:

on 13 Feb 2019

Community Treasure Hunt

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

Start Hunting!