я должен выполнить эту операцию:Сохранение разреженной матрицы в блоках в Matlab?
N = A'*P*A
Структура матрицы P является блок-диагонали, а матрица в значительной степени разреженный (также в ленточной структуре). Умножение выполняется в блоках. Но проблема заключается в хранении.
Матрица N слишком велика для хранения в полном объеме (из памяти при попытке выделить). Итак, я хочу хранить редкими способами. В то время как разреженная команда генерирует только значения в строке, формате столбца, может ли она применяться для хранения полосатых матриц с столбцом строки в качестве индекса блока?
Я пробовал spalloc, заданный в this вопрос, но он не помог сохранить строку и индекс блока. Спасибо.
Изображение для формирования A P A»
Проблема заключается в блоках. Блоки сами по себе скудны. Таким образом, можно создавать блоки как разреженные матрицы при сохранении. Итак, если в блоке есть строка = 1 и col = 1, то это можно сделать?
N(row,col) = sparse(A'*P*A)
Не могли бы вы предоставить примерный код, который создает похожие A и P интереса? – Steve
@Steve Я поделился изображением для A и P, чтобы показать структуру. – shunyo
В чем проблема? Если вы знаете координаты внутри блока, размер всех блоков и блокирует его; то вы уже все знаете. –