2010-09-29 69 views
1

我需要在matlab中爲我的任務之一製作圖像金字塔。雖然有內置的方法來獲取金字塔中的單個圖像,但我對如何將圖柄存儲到圖像感到困惑。 (我沒有太多的matlab經驗)如何在matlab中存儲異構對象?

由於金字塔中的圖像大小不同,因此數組無法工作。我正在尋找類似於.net中的列表或Java中的ArrayList。在MATLAB linked list中,他們說你可以使用標準的Java類,但是當我嘗試使用java的數組列表時,會掛起matlab。那麼,在matlab中存儲一組異構數據(或句柄?)的最佳方式是什麼?

EDIT1:這是不工作的代碼:

im0 = imread('..\lenna-lg.jpg'); //im0 = 480*480*3 array 
im1 = impyramid(im0,'reduce'); //im1 = 240*240*3 array 
pyramid = [ im0, im1 ]; //Error : Error using ==> horzcat 
         //CAT arguments dimensions are not consistent. 

回答

2

所以一些進一步的搜索,我發現所謂的電池,基本上似乎是一個異類陣列。 (http://stackoverflow.com/questions/2662964/cell-and-array-in-matlab)。所以下面的代碼現在正在工作

im0 = imread('..\lenna-lg.jpg'); //im0 = 480*480*3 array 
im1 = impyramid(im0,'reduce'); //im1 = 240*240*3 array 
cell = [ {im0}, {im1} ]; //cell = 1*2 cell 
ans = cell{1};   //ans = 480*480*3 array 

這似乎是一種處理異構數據的非常方便的方法。這是否正確?

+0

單元陣列或結構是將多個數據類型存儲在單個變量中的兩個最佳選項。 – Edric 2010-09-29 09:40:44

+4

正如@Edric所建議的,細胞陣列和結構應該很快就在你的閱讀清單上。之後你應該研究容器和物體。 – 2010-09-29 09:46:01

+3

有幾點建議:1)不要使用'cell'作爲變量名,因爲這會影響內置函數[CELL](http://www.mathworks.com/help/techdoc/ref/) cell.html)。 2)你的第三行可以用更傳統的方式寫成'cellArray = {im0,im1};'。 – gnovice 2010-09-29 14:56:45