2013-10-19 28 views
0

我有幾個fints,我如何預先分配一個單元格數組,以便以後可以循環使用它們?我真的不關心,如果他們被存儲爲一個單元陣列或陣列或有什麼不同,我只是希望能夠做到以下幾點創建一個金融時間序列對象數組

for(i = 1:size(stocks)) 
    figure(i); 
    plot(stocks(i)); 
end 

或等價的東西。分配股票=零(0,5)首先很好,但是當我嘗試插入這些fint時它不​​起作用,因爲它假設它是一個double。你甚至會如何預先分配金融時間序列對象的數組?因爲每次插入一個新長度都會有不同的長度。

回答

3

從MATLAB的doc上Preallocate Memory for a Cell Array

單元陣列不需要完全連續存儲器。但是,每個 單元都需要連續的內存,因爲MATLAB®創建的單元陣列標題用於描述數組。對於非常大的陣列,單元格中增加單元格數或單元數 會導致內存不足錯誤。

通過調用單元格函數或將 分配給最後一個元素來初始化單元陣列。例如,這些語句是等效的:

C = cell(25,50); C{25,50} = []; 

MATLAB用於 25通過-50單元陣列創建報頭。但是,MATLAB不會爲每個單元的內容分配任何內存。

+0

我只需要一個一維數組(一個列表)。寫C = cell(50)還是應該寫C = cell(1,50)? – user1661303

+2

@ user1661303'cell(50)'產生一個50x50單元陣列。使用'單元格(1,50)'或'單元格(50,1)'。兩者都可以使用線性索引來尋址:'Z = cell(1,50); Z {1} = ...;等等; Z {50} = ...;' – sfstewman

+0

result = cell(1,50); fin = fints(日期,數據,'Adj_Close','u',符號); result(i)= fin; 會生成一個「???在賦值A(:) = B中,A和B中的元素數量必須相同。」錯誤 – user1661303