Моя идея состояла бы в том, чтобы использовать массив ячеек с 5 записями и использовать переменную для индексации подмассива, который должен быть перезаписан на следующем шаге. Например. что-то типа
a = {ones(10),2*ones(10),3*ones(10),4*ones(10),5*ones(10)};
index = 1;
на следующем шаге вы можете записать в подмассив:
a{index} = 6*ones(10);
и увеличиваем индекс как
index = index+1
Очевидно какое-то ограничение:
if(index > 5) % FIXED TYPO!!
index = 1;
end
Это было бы для вас?
РЕДАКТИРОВАТЬ: Еще одна вещь, на которую следует обратить внимание, - это сортировка записей, которая, следовательно, всегда будет смещена некоторыми записями, но в зависимости от того, как вы продолжаете использовать данные, вы могли бы, например, изменить использование данных в зависимости от переменной index
.
EDIT2: у меня есть другая идея: как насчет использования классов в MATLAB. Вы можете использовать класс-дескриптор для хранения ваших данных, используя буфер только для ссылки на данные. Это может сделать его немного быстрее, в зависимости от того, какие данные (размер наборов данных и т. Д.) Вы храните и сколько сдвигов будет в вашем коде. См., Например, здесь: Matlab - обрабатывать объекты
Вы можете использовать простой класс дескриптора:
classdef Foo < handle
properties (SetAccess = public, GetAccess = public)
x
end
methods
function obj = foo(x)
% constructor
obj.x = x;
end
end
end
Храните данные в нем:
data = [1 2 3 4];
foo = Foo(data); % handle object
а затем сохраните только ссылку на объект в кольцевом буфере. В опубликованной ссылке ответ показывает, что назначение bar = foo
не копирует объект, а на самом деле содержит только ссылку:
foo.x = [3 4]
disp(bar.x) % would be [3 4]
но, как уже говорилось, я не знаю, будет ли это быстрее из-за накладных расходов ООП. Это может быть в зависимости от ваших данных ... И вот еще немного информации об этом: http://www.matlabtips.com/how-to-point-at-in-matlab/
person
tim
schedule
02.01.2014