Есть ли «очередь» в MATLAB?

Я хочу преобразовать рекурсивную функцию в итеративную. Обычно я инициализирую очередь, помещаю в нее первое задание . Затем в цикле while я потребляю задания из очереди и добавляю новые в очередь. Если моя рекурсивная функция вызывает себя несколько раз (например, обход дерева с множеством ветвей), добавляется несколько заданий. Псевдокод:

queue = new Queue();
queue.put(param);
result = 0;

while (!queue.isEmpty()) {
    param = queue.remove();
    // process param and obtain new param(s)
    // change result
    queue.add(param1);
    queue.add(param2);
}

return result;

Однако я не могу найти в MATLAB какую-либо структуру, подобную очереди. Я могу использовать вектор для имитации очереди, где добавление 3 в очередь похоже на:

a = [a 3]

и удаление элемента

val = a(1);
a(1) = [];

Если я правильно понял MATLAB, этот метод будет убийцей производительности.

Есть ли разумный способ сделать это. использовать очередь в MATLAB?

А как насчет других структур данных?

21
задан nimcap 10 November 2010 в 07:37
поделиться