【问题标题】:pre-allocation of array size in MatlabMatlab中数组大小的预分配
【发布时间】:2015-12-14 04:20:49
【问题描述】:

动态预分配数组变量大小的有效方法是什么?在 Matlab 的每次循环迭代中,数组变量的大小似乎都会改变?可以使用zeros() 矩阵对其进行初始化,但有时非常棘手(例如:确定上限和下限)。

【问题讨论】:

  • 根据我的经验,最简单最好的方法是预先分配一些最大大小,然后再去掉零……你最大的数组有多大?
  • 比如我有一个长度为1050的数组。
  • 你的意思是 1050x1050 ?
  • 是的,一个 1050x1050 的数组。
  • 附带说明,根据您的 matlab 版本和数组大小,尝试使用本讨论中详述的不同方法进行预分配:stackoverflow.com/questions/14169222/…

标签: matlab memory-management


【解决方案1】:

这是我用于动态大小的二维数组的解决方案。假设我的数组的最大限制是 2000x2000,那么我只需预先分配一维向量模拟的零(2000^2x1 向量),然后在代码结束后去掉零(或者在数据传输时忽略它们)到直方图),如果需要,在代码结束后reshape 一次...

例如:

 for n=1:100;
     v=zeros(2000^2,1);
     v(1:numel(data))=data(:);
     % rest of the code here
 end

【讨论】:

    猜你喜欢
    • 2011-09-07
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 2013-10-03
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    相关资源
    最近更新 更多