2015-02-02 3 views
1

Давайте предположим, что у нас есть массив ячеек Массивы ячеек, которая называется Q, A < 1x3256 клеток>, а каждая ячейка представляет собой массив ячеек, как этот ниже, например:Как создать очередь FIFO для массива ячеек массивов ячеек в MATLAB?

Q {1} {1}

ANS =

0 451  0 

и т.д. проблема заключается в том, что я хочу, чтобы создать очередь FIFO для того, чтобы " очистить "каждую ячейку и отправить содержимое каждой ячейки в другую функцию (в вышеуказанной ячейке значения 0 451 0) поочередно по одному. Крайне важно использовать очередь FIFO и только потому, что она является частью реализации конкретного алгоритма. Если возможно, я бы предпочел не использовать Java в Matlab, например LinkedList, поскольку я уже читал в других темах.

Как я могу сделать эту очередь FIFO с этим массивом ячеек массивов ячеек? Любые идеи? Любая помощь могла бы быть полезна.

ответ

2

Возьмем первое значение

input = Q(1); % or Q{1} depending on requirements 

Очистить первое значение:

Q(1) = []; % Q will now be, e.g. 1x3255 cell 
% Q(1) is now the old Q(2) 

Это должно быть() не {} - последний будет опорожнить содержимое Q(1) только (Q останется 1 х 3256).

Чтобы добавить дополнительные значения в конец очереди:

Q(end+1) = newdata; 
+0

Хорошо, спасибо, у вас есть какой-то очень хороший подход к этому вопросу здесь. Я хотел бы задать вам две вещи: во-первых, могло ли это решение быть более похожим на FIFO? Смысл, используя переменные головы и хвоста для первого и последнего элемента очереди Q соответственно? А также, не могли бы вы дать мне понять, как на самом деле добавить newdata в конец очереди? Я думаю, что это намного сложнее, чем это общее утверждение Q (end + 1) = newdata; потому что нам приходится иметь дело с массивом ячеек массивов ячеек. Заранее спасибо! – amno