2010-05-13 58 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