我不確定是否使用了標題中的措辭來解釋問題。請隨意編輯它以反映下面的描述。在Matlab中爲索引子矩陣的子矩陣賦值
假設我有一個獨解算器程序並可以說該輸入矩陣是以下,
A = randi(10,[9,9])-1;
I指數從1 3×3子矩陣coulumnwise至9假設可變nSubMat表示此索引可能需要1之間的任何值到9。
我索引子矩陣以下面的方式,
SubMat(nSubMat) = A((1:3)+(3*floor((nSubMat-1)/3)),(1:3)+(3*mod(nSubMat-1,3)));
現在,我想訪問並修改SubMat(2x3)位置中的值,而無需首先創建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];
我知道Matlab解釋器會自動優化LHS = RHS類型的賦值速度,但上述矩陣操作對於更多理由(算法上)而言非常重要,而不僅僅是減少副本並加快代碼的速度,這一點我不會在此討論。我在一個名爲Armadillo的C++庫中看到了所需的語法,但我不確定是否可以用MATLAB來完成相同的語法。
您是否發現任何有用的答案?如果是的話,那麼請接受它,以便它得到未答覆的列表。 –