Как лучше написать этот код в MATLAB в FIFO-логике с maxBufferSize и vector -> First-in-First-out - PullRequest
0 голосов
/ 23 октября 2019

Мне нужны векторы, идущие в буфере, тогда, если достигается максимальный размер буфера, один вектор должен быть удален. В FIFO-логике.

classdef shiftBuffer < handle
    properties (GetAccess = 'public', SetAccess = 'protected')
        vecBuffer
        buffSize
        bIsFilled
    end
    methods (Access = 'public')
        function obj = shiftBuffer(size)
            obj.vecBuffer = [];
            obj.buffSize = size;
        end

        function obj = isFilled(obj, ~)
            if obj.buffSize == size(obj.vecBuffer)
                obj.bIsFilled = true;
                return
            else
                obj.bIsFilled = false;
                return
            end
        end

        function obj = store(obj, vSignalSegment)
            j=1;
            for loop = j:size(vSignalSegment)
                obj.vecBuffer = [obj.vecBuffer, vSignalSegment(j)];
                if size(obj.vecBuffer) > obj.buffSize
                    obj.vecBuffer(1) = [];
                end
            end
        end
    end
end

Помогает правильно настроить FIFO. Пожалуйста, покажите также лучший код с этими свойствами и методами. Спасибо

...