将名称标记为变量并在 Matlab GUI 中显示它

Tag Names As Variables And Displaying It In Matlab GUI

我正在 Matlab 中构建一个 GUI(我的第一个),我有 160 个带有标签名称“tag_matrix_1、tag_matrix_2 等”的静态文本框。我正在尝试构建一个循环,将所有标签名称放入一个向量中:

for i = 1:160
tagNames(i) = ['tag_matrix_' num2str(i)];
end

但我总是会得到错误:“在赋值 A(I) = B 中,B 和 I 中的元素数必须相同。” 为什么?我该如何解决?

我的第二个问题是关于循环显示它。是否可以循环它,所以我没有 160 行设置我的静态文本框? 喜欢:

for i = 1:160
set(handles."how can I implement tagNames(i) in there",'String',data2d(i,:);
end

与其尝试将标签名称存储在数组中(这会失败,因为它们的大小都不同),我会创建一个结构,其中字段名是标签名称,值是句柄本身。您可以为此使用动态字段引用。

for k = 1:160
    field = ['tag_matrix_', num2str(k)];
    myhandles.(field) = findobj(gcf, 'tag', field);
end

然后在你的第二个循环中(填充值),你将访问这个结构的字段。

for k = 1:160
    set(myhandles.(['tag_matrix_', num2str(k)]), 'String', data2d(k,:));
end

你真的需要这样存储 tag_names 吗?实际上,您可以只使用 findobj 来查找具有给定标签的元素。这将允许您将第二个循环替换为。

for k = 1:160
    set(findobj(gcf, 'tag', ['tag_matrix_', num2str(k)]), 'String', data2d(k,:))
end