matlab中的forlooping句柄
我有一个关于for循环的问题。我有10个文本框,分别命名为,text1\u数据,text2\u数据。。。文本10_数据 我想做的是循环这个东西,这样我就不必手工写下每一个可能的结果。(a应该可以相当大。) 我试着写h=text{i}_数据,但没有成功。关于h应该等于什么有什么想法吗matlab中的forlooping句柄,matlab,loops,handles,Matlab,Loops,Handles,我有一个关于for循环的问题。我有10个文本框,分别命名为,text1\u数据,text2\u数据。。。文本10_数据 我想做的是循环这个东西,这样我就不必手工写下每一个可能的结果。(a应该可以相当大。) 我试着写h=text{i}_数据,但没有成功。关于h应该等于什么有什么想法吗 data=xlsread('nipmaterial.xlsx') a=(get(materialpopup_data,'value'))-1 for i=1:10 h=t
data=xlsread('nipmaterial.xlsx')
a=(get(materialpopup_data,'value'))-1
for i=1:10
h=text{i}_data;
set(h,'string',data(a,i))
end
出于演示目的,首先创建一个放置文本的图形:
clear all
close all
clc
% Create a figure for demonstration
figure(1)
xlim([0 2])
ylim([0 11])
hold on
然后,在创建文本框时,只需将初始文本框句柄指定给单元格数组:
% Create initial text boxes and store handle in the cell text_box.
text_box=cell(10,1);
for ii=1:10
text_box{ii}=text(1,ii,'Initial text');
end
之后,您可以再次给他们打电话,根据自己的喜好进行更改:
% Call text boxes again to change the text:
for ii=1:10
h = text_box{ii} % Retrieve handle from cell
set(h,'string','Other text than initial text')
end
把你所有的文本框放进一个单元格数组而不是单个变量,这样你就可以很容易地迭代它们。如果你问“如何在单元格数组中放置句柄”,也许MATLAB的优点还不适合你。我会给你一个最丑陋但最短的解决方案,然后也许你会思考一下@Daniel说的话,试着在某个时候试一试,只是为了正确的事情。因此,丑陋的解决方案
eval(sprintf('h=text%d_data;',i))代码>(MATLAB上帝;请原谅我使用了eval
!他创造了我……)每次有人叫eval()一只小海豹就死了!有时它们是最好的解决方案,但大多数情况下。。。不是。@EJG89希望我写的是死代码,永远不会运行。:-)@EJG89eval
没有问题。该代码将像任何其他有效代码一样编译。通常应避免使用eval
,但使用时当然有原因。但是,我建议在这里使用结构数组,因为text
似乎连接到多个属性。