Я не уверен, что я использовал для исправления формулировок в заголовке, чтобы описать проблему. Пожалуйста, не стесняйтесь редактировать его, чтобы отразить описание ниже.Назначение значений подматрице индексированной подматрицы в Matlab
Пусть у меня есть программа Sudoku Solver и позволяет сказать, что входной матрицы заключается в следующем,
A = randi(10,[9,9])-1;
индекс I 3х3 суб-матрицы coulumnwise от 1 до 9. Предположим, что переменная nSubMat представляя это индекс может принимать любые значения от 1 до 9.
I индекс подматрицы следующим образом,
SubMat(nSubMat) = A((1:3)+(3*floor((nSubMat-1)/3)),(1:3)+(3*mod(nSubMat-1,3)));
Теперь я хочу получить доступ и изменить значение в позиции (2x3) SubMat, не создавая в первую очередь SubMat (скажем, чтобы избежать ненужных копий).
Разрабатывать, если бы я иметь функцию подматрицы(), которая будет осуществлять выше, мое заявление будет выглядеть примерно следующим,
submatrix(A((1:3)+(3*floor((nSubMat-1)/3)),(1:3)+(3*mod(nSubMat-1,3))),[2,3]) = 5;
или даже
submatrix(A((1:3)+(3*floor((nSubMat-1)/3)),(1:3)+(3*mod(nSubMat-1,3))),[2:3,2:3]) = [1 2;3 4];
I знают, что интерпретатор Matlab автоматически оптимизирует LHS = назначения типа RHS для скорости, но работа над матрицей важна по многим причинам (с точки зрения алгоритма), чем просто сокращение копий и ускорение кода, который я не буду здесь останавливаться. Я видел требуемый синтаксис в библиотеке C++ под названием Armadillo, но я не уверен, что то же самое можно сделать с MATLAB.
Вы нашли ответ полезный? Если да, то, пожалуйста, примите его, чтобы он вышел из списка без ответа. –