标记名称作为变量及其在Matlab GUI中的显示



我正在Matlab中构建GUI(我的第一个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

相关内容

  • 没有找到相关文章

最新更新