Matlab 查找具有特定模式的句柄
我有一些手柄看起来像:Matlab 查找具有特定模式的句柄,matlab,user-interface,matlab-figure,handles,Matlab,User Interface,Matlab Figure,Handles,我有一些手柄看起来像: ans = figure1: 189.0205 sampleNameEdit: 17.0216 selectCatPopup: 16.0237 radiobutton_Al: 14.0266 radiobutton_O: 190.0183 output: 189.0205 如何轻松
ans =
figure1: 189.0205
sampleNameEdit: 17.0216
selectCatPopup: 16.0237
radiobutton_Al: 14.0266
radiobutton_O: 190.0183
output: 189.0205
如何轻松查找以
radiobutton\uu
开头的句柄?将来,我将有更多的单选按钮可以轻松检索。假设您有一个结构,每个句柄存储在不同的字段中:
s.radiobutton_1 = 1; %// example data: struct with several fields
s.otherfield = 22;
s.radiobutton_2 = 333;
names = fieldnames(s); %// get all field names
ind = strmatch('radiobutton_',names); %// logical index to matching fields
selected = cellfun(@(name) s.(name), names(ind)); %// contents of those fields
返回所需的结果:
selected =
1
333
假设您有一个结构,每个句柄存储在不同的字段中:
s.radiobutton_1 = 1; %// example data: struct with several fields
s.otherfield = 22;
s.radiobutton_2 = 333;
names = fieldnames(s); %// get all field names
ind = strmatch('radiobutton_',names); %// logical index to matching fields
selected = cellfun(@(name) s.(name), names(ind)); %// contents of those fields
返回所需的结果:
selected =
1
333
现在还不清楚从何处获得
ans
,它的结构是什么,以及到底应该“从”radiobutton“开始”什么。但是,如果您希望获得所有现有单选按钮的句柄,则可以这样做:
h = findobj(findobj('Type', 'uicontrol'), 'Style', 'radiobutton');
您可以使用以下命令将搜索限制为子对象,例如当前地物的子对象
h = findobj(findobj(gcf, 'Type', 'uicontrol'), 'Style', 'radiobutton');
您可以使用以下命令将搜索限制为给定的句柄列表oh
(不带子项)
现在还不清楚从何处获得
ans
,它的结构是什么,以及到底应该“从”radiobutton“开始”什么。但是,如果您希望获得所有现有单选按钮的句柄,则可以这样做:
h = findobj(findobj('Type', 'uicontrol'), 'Style', 'radiobutton');
您可以使用以下命令将搜索限制为子对象,例如当前地物的子对象
h = findobj(findobj(gcf, 'Type', 'uicontrol'), 'Style', 'radiobutton');
您可以使用以下命令将搜索限制为给定的句柄列表oh
(不带子项)
要搜索句柄名称中的特定模式,最好的方法是遵循。但是,考虑基于你正在寻找的对象的类型进行搜索。在这种情况下,似乎需要定位所有
radiobutton
对象
查找特定样式的句柄最简单的方法是搜索设置为radiobutton
的句柄。考虑一个<代码>图两个控件:一个文本框和一个单选按钮,它们的句柄存储在一个普通的数组<代码> uih >:
hf = figure; % parent of uicontrols
uih(1) = uicontrol('style','text');
uih(2) = uicontrol('style','radiobutton');
这是我的测试手柄(您的将不同):
第一个是文本框,第二个是单选按钮
按父句柄搜索
如果您有父句柄(即图形句柄,hf
),您甚至不需要句柄列表uih
!只需拨打以下电话:
hr = findobj(hf,'style','radiobutton')
hr =
4.0012
搜索句柄数组
如果您没有父句柄,但有一个要搜索的句柄列表,那么也没有问题:
hr = findobj(uih,'style','radiobutton')
hr =
4.0012
搜索句柄的结构
在本例中,句柄作为字段存储在结构中:
handles =
ht: 3.0012
hr: 4.0012
hr = findobj(structfun(@(x)x,handles),'style','radiobutton')
hr =
4.0012
别担心,这会找到所有单选按钮 要搜索句柄名称中的特定模式,最好的方法是遵循。但是,考虑基于你正在寻找的对象的类型进行搜索。在这种情况下,似乎需要定位所有
radiobutton
对象
查找特定样式的句柄最简单的方法是搜索设置为radiobutton
的句柄。考虑一个<代码>图两个控件:一个文本框和一个单选按钮,它们的句柄存储在一个普通的数组<代码> uih >:
hf = figure; % parent of uicontrols
uih(1) = uicontrol('style','text');
uih(2) = uicontrol('style','radiobutton');
这是我的测试手柄(您的将不同):
第一个是文本框,第二个是单选按钮
按父句柄搜索
如果您有父句柄(即图形句柄,hf
),您甚至不需要句柄列表uih
!只需拨打以下电话:
hr = findobj(hf,'style','radiobutton')
hr =
4.0012
搜索句柄数组
如果您没有父句柄,但有一个要搜索的句柄列表,那么也没有问题:
hr = findobj(uih,'style','radiobutton')
hr =
4.0012
搜索句柄的结构
在本例中,句柄作为字段存储在结构中:
handles =
ht: 3.0012
hr: 4.0012
hr = findobj(structfun(@(x)x,handles),'style','radiobutton')
hr =
4.0012
别担心,这会找到所有单选按钮 我想这会有助于显示哪行代码创建了那个ans。我想这会有助于显示哪行代码创建了那个ans。这是我记忆中唯一正确的答案opinion@RobertStettler你是对的。要搜索任何模式,其他答案都不适用。但是,问题是查找单选按钮(具有
'Style'、“radiobutton'
的对象)。所以,虽然你在这里只得到了你的答案,但对其他人的否决票似乎有点太多了。@chappjc你完全正确,我已经试着撤销否决票,但由于某种原因我被锁定了。我会尽快改变的。@Roberts Tettler我已经编辑了我的帖子,并注意到答案的不同以及每种方法何时适用。它应该允许您现在更改投票,但这当然是您的决定。:)谢谢,这是我唯一正确的答案opinion@RobertStettler你是对的。要搜索任何模式,其他答案都不适用。但是,问题是查找单选按钮(具有'Style'、“radiobutton'
的对象)。所以,虽然你在这里只得到了你的答案,但对其他人的否决票似乎有点太多了。@chappjc你完全正确,我已经试着撤销否决票,但由于某种原因我被锁定了。我会尽快改变的。@Roberts Tettler我已经编辑了我的帖子,并注意到答案的不同以及每种方法何时适用。它应该允许您现在更改投票,但这当然是您的决定。:)谢谢