Matlab:将行插入大矩阵的有效方法

时间:2018-01-07 03:44:00

标签: matlab matrix insert row memory-efficient

我正在处理生成和修改大小为[10 ^ 6,8]的相当大的矩阵。每次在矩阵的预定位置调用时,算法需要插入新行。我的问题是哪种方法是最节省内存/最快的方法?感谢。

1 个答案:

答案 0 :(得分:1)

将行插入矩阵的基本方法是将矩阵分成两部分,一部分在插入偏移之前,一部分在插入偏移之后。完成此操作后,您所要做的就是将新矩阵组合为[part1 row part2]

以下是一个例子:

matrix = [
  1 1;
  2 2;
  3 3;
  4 4;
  5 5
]; 

row_to_insert = [100 100];

for insertion_offset = 0:size(matrix,1)
    disp([
      matrix(1:insertion_offset,:);
      row_to_insert;
      matrix(insertion_offset+1:end,:)
    ]);
end

这将输出:

   100   100
     1     1
     2     2
     3     3
     4     4
     5     5

     1     1
   100   100
     2     2
     3     3
     4     4
     5     5

     1     1
     2     2
   100   100
     3     3
     4     4
     5     5

     1     1
     2     2
     3     3
   100   100
     4     4
     5     5

     1     1
     2     2
     3     3
     4     4
   100   100
     5     5

     1     1
     2     2
     3     3
     4     4
     5     5
   100   100

但是,如果可以的话,考虑使用不同的数据存储方法,无论您的算法如何表现良好,使用如此庞大的矩阵总是很困难。