我已经从在结构中收集我的 Matlab 模拟结果转变为在表中收集它们。我对这种表示数据的方式非常满意,但我仍然不确定如何处理内存预分配。如果我只是将行添加到表的底部,我会遇到已知的问题,即在每次迭代中重新分配表中包含的所有变量。
我可以预先分配一些任意数量的行,并在我的脚本结束时修剪表格。但如果我这样做,我必须记下实际包含数据的行数。在对表值进行任何操作时都必须考虑这个数字,这就失去了使用这个高级对象的好处。
有没有一种方法可以为 Matlab 表预分配内存,既不会改变表的行为方式,也不需要外部簿记?
编辑 - 澄清
我的问题不仅与表格有关,而且与任何 Matlab 变量类有关。多年来我一直在预分配 Matlab 变量,令人沮丧的是没有有效的单行程序可以在没有额外管理的情况下附加数据。我希望至少表对象会包含一些更智能的内存管理解决方案。在我看来,为了避免重新分配而添加空行在科学代码中没有立足之地(应该尽可能抽象)。
最佳答案
您可以创建自己的自定义变量/表类来实现您正在寻找的东西,但老实说,使用您已经建议的解决方案要容易得多,即只需使用一个额外的计数器变量来跟踪您的位置。
我理解您对没有“更清洁”的方法感到沮丧,但实际上它并没有那么麻烦,而且任何潜在的“智能”解决方案都会对某些人有效,而对其他人则效果不佳,无论是出于效率原因还是否则。另外,我想在很多情况下计数器已经内置到循环中:
A = zeros(2000, 1);
for i = 1:N
A(i) = i^2;
% i is the number of rows filled so far...
end
关于matlab - 在没有簿记的情况下为 Matlab 表预分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30208049/