Динамическая сбалансированная структура данных в Matlab?

Этот answer утверждает

Я не думаю, что вы (или я) можете создавать динамические структуры данных в MATLAB. Мы должны использовать функции MATLAB OO и классы MATLAB. Поскольку я думаю что эти объекты действительно являются оболочкой MATLAB вокруг Java, которую я делаю смелое утверждение, что эти объекты находятся за пределами MATLAB. Вопрос семантика, я соглашаюсь. Если вы хотите создавать динамические структуры данных с помощью MATLAB, вы должны использовать OO и классы, вы не можете сделать это с помощью того, что я как основной язык, который не имеет указателей на уровне пользователя.

Теперь предположим, что сумка. Новые номера добавляются в сумку в случайном порядке, и все же номера должны быть заказаны. Количество номеров неизвестно. Следовательно, мне нужна динамическая структура данных: размер структуры должен быть изменен. Также структура должна быть в состоянии уравновешиваться, то есть мне нужно ее заказать.

Какую структуру данных следует использовать для динамического сбалансированного требования к структуре данных в Matlab?

Ответ 1

Матрицы Matlab по своей сути являются динамическими. Если у вас есть vector упорядоченных номеров и вы хотите вставить новый number в нужное место (поддерживая векторное упорядочение), вы можете просто сделать

[~, ind] = find(number<=vector,1,'first'); % determine where to insert
if isempty(ind), ind = numel(vector)+1; end % in this case, insert at the end
vector = [vector(1:ind-1) number vector(ind:end)]; % do the insert, extending the vector

Конечно, это не очень быстро из-за необходимости перераспределения памяти.