将名称标记为变量并在 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
我正在 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