Как сохранить эту структуру (список списков целых чисел) в Matlab?
Мне нужно хранить список списков целых чисел. Например,X[1]
должен быть в состоянии содержать[1 3 5]
покаX[2]
может содержать[1 2]
, Какое лучшее решение? Клеточный массив?
Предыдущая история:
Для проекта я предварительно вычисляю пересечения между N линиями и M кубами. Они извлекаются двумя способами: с учетом индекса строки, я хочу список кубов, через которые он проходит, и с учетом индекса куба, я хочу список строк, которые проходят через него.
Типичные значения: N = 2 ^ 24 и M = 2 ^ 18, что означает, что матрица пересечений (NxM) не может быть и речи. К счастью, средняя линия проходит только через M ^ (1/3) = 2 ^ 6 кубов. В настоящее время я сохраняю структуру в виде матрицы NxM ^ (1/3), чтобыX(n,:)
является вектором кубов, через которые проходит n-ая линия (дополненная нулями).
Это прекрасно работает для извлечения кубов по индексу списка, но оказывается, что узким местом моего кода является поиск строк по индексу куба. (Я делаю это сfind(X==m)
где m - индекс куба.) Я не могу создать противоположную матрицу, так как количество линий, проходящих через один куб, может быть очень большим, даже если оно в среднем мало.