2010-05-13 36 views
2

我在matlab中有一个值为<1x1 struct>.的结构,它的名字是figurelist。 在这个结构中,有一个叫做images的字段。内的图像,我有img1, img2, img3, ..... , img25.For循环从结构中提取信息不起作用?

现在,我做了一个for循环来提取这些图像的名称25张图片,我主要做:

For K=1:25 
    image(figurelist.images.imgK) 
    PAUSE(0.25) 
End 

这不幸的是行不通的。我得到一个错误说:

??? Reference to non-existent field 'imgK'.

是否有可能使用一个循环从结构提取这样的信息?或者我做错了什么? 谢谢。

+1

gnovice的解决方案似乎工作,但我很好奇,为什么你命名变量的img [1,2,3]代替将它们存储在一个数组中。后者将是一个更具可扩展性和优雅的解决方案。 – Kena 2010-05-14 15:19:29

+0

那么我得到了这个结构,我应该按照它的方式“处理它”,并找到一种方法来提取数据。 – NLed 2010-05-14 20:15:13

回答

4

你将不得不做这样的事情:

for K=1:25 
    image(figurelist.images.(['img' int2str(K)])) 
    pause(0.25) 
end 

因为字段名是你的循环变量的函数,你必须构建字段名称的字符串。函数INT2STR将循环变量K的值转换为字符串,然后将其附加到'img'以创建字段名称的字符串。然后dynamic field reference syntax.())用于使用该字符串访问字段值。

使用动态字段名称的几个很好的例子可以在Loren's blogDoug's blog上找到。

+0

谢谢你解决了这个问题(我必须等10分钟才能接受)......你能解释一下你做了什么吗?你把整数转换为K的字符串..为什么?所以它可以把它看作一个值而不是一个字符?或什么 – NLed 2010-05-13 20:19:57

+0

感谢您解释:) – NLed 2010-05-13 20:28:52

+0

道格的博客是如此的有益!谢谢 !! – NLed 2010-05-13 20:54:48