我不确定是否使用了标题中的措辞来解释问题。请随意编辑它以反映下面的描述。在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来完成相同的语法。
您是否发现任何有用的答案?如果是的话,那么请接受它,以便它得到未答复的列表。 –