0

我有几个 fints,我如何预先分配一个单元格数组,以便以后可以循环遍历它们?我真的不在乎它们是否存储为单元数组或数组或其他任何不同的东西,我只想能够执行以下操作

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

或等效的东西。使用stocks = zeros(0,5) 进行分配首先效果很好,但是当我尝试插入fints 时不起作用,因为它假设它是双倍的。您甚至会如何为金融时间序列对象预分配数组?因为每次插入新的长度都会不同。

4

1 回答 1

3

来自 Matlab's doc on Preallocate Memory for a Cell Array

元胞数组不需要完全连续的内存。但是,每个单元都需要连续的内存,MATLAB® 创建用于描述数组的单元数组标头也是如此。对于非常大的数组,逐渐增加单元格的数量或单元格中的元素数量会导致内存不足错误。

通过调用 cell 函数或分配给最后一个元素来初始化元胞数组。例如,这些语句是等价的:

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

MATLAB 为 25×50 元胞数组创建标头。但是,MATLAB 不会为每个单元格的内容分配任何内存。

于 2013-10-19T18:49:11.020 回答