2015-11-05 5 views
0

У меня есть матричная проблема в Matlab.
У меня есть разрешенная матрица размером 1 миллион x 1 миллион, и я продолжаю использовать null. Обычно проблема заключается в том, что у меня заканчивается память. Я попробовал svds (который используется для svd для разреженной матрицы), но моя проблема в том, что у меня тоже не хватает памяти. Существует ли возможная работа для больших разреженных матриц для функции null() в Matlab?Как вычислить нуль большой разреженной матрицы в Matlab?

+0

Возможно, лучший вопрос заключается в том, как обрабатывать память в Matlab, чтобы мы могли добавить физическую RAM или виртуальную память? –

ответ

5

В общем, нулевом пространстве матрицы, или унитарные матрицы (U и V) разложения сингулярного значения НЕ разреженные, даже если входная матрица скудна. Поэтому, если вы пытаетесь работать с матрицей 1M-1MM, даже если она разрежена, выходы ваших операций НЕ, и поэтому у вас закончилась нехватка памяти.

Что вы можете сделать?
Если ваша матрица ввода имеет определенную структуру (в дополнение к ее разреженности), вы можете найти некоторый алгебраический метод, чтобы воспользоваться этой структурой.
Другой путь, который вы должны учитывать, - это то, почему вам нужно вычислить нулевое пространство матрицы? Можете ли вы достичь той же цели без явной оценки нулевого пространства?

+0

Чтобы добавить пример структуры, которая поможет вам: наличие матрицы, которая является блок-диагональю, позволит вам разделить проблему на несколько более мелких, что позволит вам вычислить нулевое пространство. – BillBokeey

+0

Хорошо! И размер каждого элемента в разреженной матрице примерно в 3 раза больше, чем двойной. – patrik

+0

Как создать диагональ блока? –

Смежные вопросы