2013-01-02 27 views
2

正如標題所說,只是想知道是否有一個函數可以作爲字段名稱(http://www.mathworks.co.uk/help/matlab/ref/fieldnames.html)但對於細胞。等效的字段名字功能

所以,如果我有這樣的:

a = imread('redsquare.bmp'); 
b = imread('bluesquare.bmp'); 
c = imread('yellowsquare.bmp'); 
d = imread('greysquare.bmp'); 

e = {a, b, c, d}; 

我試圖找回之一:A,B,C,d或不帶擴展名的圖像名稱。

我試過fn = fileparts(e)fntemp = cell2struct(e,2),但我無法正常工作。

希望這是有道理 感謝

回答

4

單元陣列不包含任何元數據信息,如字段名或文件名。如果你想訪問這些信息,你需要改變你的數據存儲結構。一些選項包括:

標量結構 很適合有單一名稱參考。

images.red = imread('redsquare.bmp'); 
images.blue = imread('bluesquare.bmp'); 

使用fieldnames(images)來獲取名稱。

結構陣列 有點更一般。允許完全通用名稱(包括特殊字符和空格)和額外的元數據,如果你需要它(如「大小」,「作家」)

images(1).name = 'red'; 
images(1).im = imread('redsquare.bmp'); 
images(2).name = 'blue'; 
images(3).im = imread('bluesquare.bmp'); 

使用{fieldnames.name}得到公正的名稱。

Containers.map 可能超過您在這裏所需要的,但很好的瞭解。 help comtainers.map瞭解更多信息。

+0

完美的Scalar結構非常適合我想要做的事情。非常感謝你! –