最快的方式保持过去N循环的输出矩阵

1视图(30天)
嘿,每个人,我有一些代码与一个for循环,我想商店最后结果和计算间歇过去N循环内的评估。我将每个评估结果存储在一个矩阵的mydata列。步骤通过N时,删除第一列的数据(因为它是最古老的)和N + 1日一步我的结果添加到最后列如下:
mydata (: 1) = [];
mydata (:, N) = newdata;
虽然这工作很好,非常耗时。有没有更快的方法去除第一列的数据和新数据添加到最后一列的矩阵呢?请注意,我不能把所有的数据,因为它最终将成为一个非常大的矩阵。
4评论
dpb
dpb 2023年2月28日
不奇怪但是觉得外面机会优化器可以使它不太坏……没有多少失去了尝试和我当时去……

登录置评。

接受的答案

1月
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月
1月 2023年3月1日
在每个迭代循环缓冲区满,但只有最后N迭代问题。如果事先知道的迭代次数,便宜只在最后一个N迭代填充缓冲区。的 抵消 调整动态匹配的迭代次数和缓冲区的长度。
循环缓冲区也工作,但它用于覆盖内存的浪费时间。

登录置评。

更多的答案(0)

类别

找到更多的在循环和条件语句帮助中心文件交换

下载188bet金宝搏


释放

R2022a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!