SET with a dynamic function handle?

Hello,
I want to use the SET command inside a while loop, with the function handle changing each time through. Namely, I have a few listboxes (tagged listbox1, listbox2, listbox3 etc.) and based on a numerical condition, I want only up to a certain number of them to remain visible. This doesn't work, but may provide a better idea of what I'm shooting for:
%get the handles of all listboxes, get the corresponding tags
allHandleList = findobj('style','listbox')
allTagList = get(allHandleList,'Tag')%get the tags of all those handles
handles.numCores = str2double(getenv('Number_of_processors'))
n=1;
while n<=handles.numCores
%make a function handle based on each tag
fhandle=str2func(['handles.' allTagList{n}])
%use that function handle to change a PropertyValue
set(fhandle(),'Visible','off')
n=n+1; %update count variable
end

 采纳的回答

No need to make a function handle.
fhandle = handles.(allTagList{n});
set(fhandle, 'Visible', 'off');

2 个评论

Thanks! didn't know I could create the function name like that.
That's not a function name, that's a dynamic field name. "handles" is a structure.

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Programming 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by