【发布时间】:2013-10-10 01:27:17
【问题描述】:
在 Octave .oct 文件中,可以这样提取子矩阵:
B = A.extract(a-1,c-1,b-1,d-1) ;
在 Octave 代码中相当于 B = A(a:b,c:d),但是是否可以以类似的方式写入矩阵的子集,
A(a-1,c-1,b-1,d-1) = B ; // some other smaller matrix
或者我是否必须遍历相关的行/列并逐个元素地写入?
【问题讨论】:
在 Octave .oct 文件中,可以这样提取子矩阵:
B = A.extract(a-1,c-1,b-1,d-1) ;
在 Octave 代码中相当于 B = A(a:b,c:d),但是是否可以以类似的方式写入矩阵的子集,
A(a-1,c-1,b-1,d-1) = B ; // some other smaller matrix
或者我是否必须遍历相关的行/列并逐个元素地写入?
【问题讨论】:
假设A 属于Array 类,您可以使用以下方法之一(请参阅the documentation):
Array<T> & insert (const Array<T> &a, octave_idx_type r, octave_idx_type c)
Array<T> & insert (const Array<T> &a, const Array<octave_idx_type> &idx)
您只需要知道左上角的下标索引(或 N 维的等效索引)。下面将二维矩阵B插入二维矩阵A,坐标(a, c)
A.insert (B, a, c);
对于更多维度,您需要创建一个带有该点坐标的Array<octave_idx_type>。
【讨论】: