【发布时间】:2018-01-07 03:43:59
【问题描述】:
我正在处理生成和修改一个大小为 [10^6,8] 的相当大的矩阵。每次在矩阵的预定位置调用该算法时,都需要插入一个新行。我的问题是哪种方法是最节省内存/最快的方法?谢谢。
【问题讨论】:
-
请添加一些代码。你想在矩阵的哪里添加新行?在它的开头或结尾。
-
它可以在任何地方,很可能在某个地方;不是在最开始也不是在最后。
-
首先,您最好将示例代码附加到问题中以阐明您的问题。关于最快的方法,基本和第一种方法是使用 Preallocation 。除了预分配,也许你还可以使用向量化计算等其他方法,但如果不分析你的代码,我不能肯定地说。
-
主要算法很复杂。我认为没有必要添加附加它。在这里,只需考虑一个大矩阵,无论您喜欢什么,都需要将新行添加到矩阵中。对于这个矩阵,预分配不是这里的情况。
-
抱歉,只有一种方法可以在矩阵中插入一行,那就是
cat(即[])。它不漂亮。我建议你想一个更好的方法来实现你的算法。或者,如果您现在存储数据的方式太慢,则将数据存储为行向量元胞数组。
标签: matlab matrix insert row memory-efficient