Matlab应用程序设计师列表框。值改变时当ItemsData数组

57视图(30天)
你好,
我有一个问题与应用程序设计师LisxtBox。我有一个列表框,我定义我的单元阵列中的条目的名称(例如,ch1 ch2, ch3、ch4)。当我使用下面的命令,我可以检索所选项目或其索引
app.ListBox.Value
[~,指数]= ismember (app.ListBox.Value app.ListBox.Items)
然而,当我属性(匹配)与一个数组项(例如;ch1变得资料片,N是数据点的数量。我使用app.ListBox。ItemsData定义每项数据数组),自动app.ListBox。价值”成为“资料片”单元阵列。
我的目的是只能索取我选择项的名称(当我点击列表框项,我只希望看到ch1, ch2等等,不是资料片数组)。我应该使用别的东西而不是“ListBox.Value”?你能帮我吗?
谢谢你!

接受的答案

亚当Danz”class=
亚当Danz 2020年5月15日
编辑:亚当Danz 2020年5月15日
我认为你要找的是什么,
~,指数= ismember (app.ListBox。价值,app.ListBox.ItemsData);%注意:ItemsData
%这个返回一个字符向量;它不会处理> 1的选择
值= app.ListBox.Items{指数};
%这返回一个包含char-vectors细胞
值= app.ListBox.Items(指数);
7评论
亚当Danz”class=
亚当Danz 2020年5月15日
”功能提供给你1与0 x4数组里面。”
函数返回一个逻辑向量。如果向量都是0(假的),这意味着没有匹配。可能发生的三个原因。
  1. 没有项目在列表框中选择
  2. 有物品ItemData并不仅仅是资料片数组所描述
  3. 精度浮点舍入问题。
这是一个演示,我的解决方案 应该 工作。
无花果= uifigure ();
lbx = uilistbox(图,“项目”,{“苹果”,“梨”,“香蕉”},
“ItemsData”,{兰德(4095),兰德(4095),兰德(4095)'})
指数= cellfun (@ (c) isequal (lbx.Value c), lbx.ItemsData)
%的结果:
%指数=
% 1×3逻辑数组
% 1 0 0
找到(索引)列表框的% = 1(第一行)
如果这个方法不起作用,我不能麻烦拍摄没有最小工作示例(例如,你可以分享一个简单的列表框,繁殖问题)。
但是,首先,让我们后退一步。就好了如果列表框返回的索引号用户的选择。 Matlab应该实现这个! 。但与此同时,你可以重组,简化工作流程,这样您就可以使用列表框选择后得到ItemsData中的值选择。
这是一个改编自我上面的例子。
%创建一个单元阵列列表框的选择和你的数据。
%这也可以组织在一个表如果你的数组
%都是一样的长度。
data = {
“Ch1”,兰德(4095)的;
“Ch2”,兰德(4095)的;
甲基的,兰德(4095)的};
无花果= uifigure ();
lbx = uilistbox(图,“项目”数据(:1));
%得到用户的选择
~,指数= ismember (lbx。价值,lbx.Items);
%得到相关数据
chosenData ={指数,2}数据;

登录置评。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!