我正在处理生成和修改大小为[10 ^ 6,8]的相当大的矩阵。每次在矩阵的预定位置调用时,算法需要插入新行。我的问题是哪种方法是最节省内存/最快的方法?感谢。
答案 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
但是,如果可以的话,考虑使用不同的数据存储方法,无论您的算法如何表现良好,使用如此庞大的矩阵总是很困难。