Мне нужно знать, есть ли какой-либо эффективный способ сделать следующее в MATLAB.
У меня есть несколько больших разреженных матриц размером примерно 9000000x9000000.
Мне нужно получить доступ к нескольким элементам такой матрицы и присвоить каждому выбранному элементу другое значение, хранящееся в другом массиве. Я приведу пример:
Что я имею:
- РАЗРЕЖЕННАЯ МАТРИЦА размером 9000000x9000000
Матрица со списком индексов и значений, к которым я хочу получить доступ, это такая матрица:
[row1, col1, value1; row2, col2, value2; ... rowN, colN, valueN]
Где N - длина такой матрицы.
Что мне нужно:
Присвойте SPARSE MATRIX соответствующее значение соответствующему индексу, это:
SPARSE_MATRIX(row1, col1) = value1
SPARSE_MATRIX(row2, col2) = value2
...
SPARSE_MATRIX(rowN, colN) = valueN
Заранее спасибо!
РЕДАКТИРОВАТЬ:
Спасибо обоим за ответ, я думаю, что я плохо объяснил, я попробую еще раз.
У меня уже есть большая РАЗБОРНАЯ МАТРИЦА размером около 9000000 строк x 9000000 столбцов, это РАЗБОРНАЯ МАТРИЦА, заполненная нулями.
Затем у меня есть еще один массив или матрица, назовем ее M с N количеством строк, где N может принимать значения от 0 до 9000000; и 3 колонки. Первые два столбца используются для индексации элемента моей РАЗБОРНОЙ МАТРИЦЫ, а в третьем столбце хранится значение, которое я хочу передать в РАЗБОРНУЮ МАТРИЦУ, то есть для случайной строки M, i:
SPARSE_MATRIX(M(i, 1), M(i, 2)) = M(i, 3)
Идея состоит в том, чтобы сделать это для всех строк, я пробовал это с общей индексацией:
SPARSE_MATRIX(M(:, 1), M(:, 2)) = M(:, 3)
Теперь я хотел бы сделать это назначение для всех строк в M как можно быстрее, потому что, если я использую цикл или обычное индексирование, это занимает много времени (я использую процессор i7 7-го поколения с 16 ГБ ОЗУ). И мне также нужно сохранить нули в SPARSE_MATRIX.
- РЕДАКТИРОВАТЬ 2: РЕШЕНО! Спасибо, Метахоминид, я не думал об этом, но да, разреженная функция действительно решает мою проблему, я просто думаю, что вчера мои мозговые цепи были закорочены, и я не мог видеть сквозь них, хахаха. В любом случае спасибо обоим!
С уважением!