Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 查找具有特定模式的句柄_Matlab_User Interface_Matlab Figure_Handles - Fatal编程技术网

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我已经编辑了我的帖子,并注意到答案的不同以及每种方法何时适用。它应该允许您现在更改投票,但这当然是您的决定。:)谢谢