最快的方式保持过去N循环的输出矩阵
1视图(30天)
显示旧的评论
嘿,每个人,我有一些代码与一个for循环,我想商店最后结果和计算间歇过去N循环内的评估。我将每个评估结果存储在一个矩阵的mydata列。步骤通过N时,删除第一列的数据(因为它是最古老的)和N + 1日一步我的结果添加到最后列如下:
mydata (: 1) = [];
mydata (:, N) = newdata;
虽然这工作很好,非常耗时。有没有更快的方法去除第一列的数据和新数据添加到最后一列的矩阵呢?请注意,我不能把所有的数据,因为它最终将成为一个非常大的矩阵。
接受的答案
1月
2023年2月28日
编辑:1月
2023年2月28日
如果你事先不知道迭代的数量,circulare缓冲区比萎缩更高效反复不断扩大的数组:
N = 10;
缓冲=南(N, 5);
iBuffer = 0;
而兰德> 0.05
data =兰特(1、5);
iBuffer =国防部(iBuffer N) + 1;%环绕光标
缓冲(iBuffer:) =数据;
结束
LastData =缓冲区([iBuffer + 1: N, 1: iBuffer],:);
4评论
1月
2023年3月1日
在每个迭代循环缓冲区满,但只有最后N迭代问题。如果事先知道的迭代次数,便宜只在最后一个N迭代填充缓冲区。的
抵消
调整动态匹配的迭代次数和缓冲区的长度。
循环缓冲区也工作,但它用于覆盖内存的浪费时间。