【问题标题】:Write to a matrix in .oct file without looping?写入.oct 文件中的矩阵而不循环?
【发布时间】: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 

或者我是否必须遍历相关的行/列并逐个元素地写入?

【问题讨论】:

    标签: c++ matrix octave


    【解决方案1】:

    假设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&lt;octave_idx_type&gt;

    【讨论】:

    • 其实我想做的更像是 A.index (idx_vector (a, b), idx_vector (c, c)) = B ;即我有一个大的零填充矩阵 A,我想在 A 中插入一个较小的矩阵 B。
    • @babelproofreader 你是对的。我误读了你的问题。我已经更新了答案。
    猜你喜欢
    • 1970-01-01
    • 2017-04-16
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    相关资源
    最近更新 更多