【问题标题】:How to compute only the diagonal of a matrix product in Octave?如何仅计算 Octave 中矩阵乘积的对角线?
【发布时间】:2011-01-19 01:15:42
【问题描述】:

Octave 中有没有一种方法可以只计算和存储矩阵乘积的对角线?

基本喜欢做:vector = diag(A*B);

我不关心A*B 的任何值,除了对角线上的值。矩阵大小在80k x 1212 x 80k 左右,所以即使我不关心速度/额外内存,它也不适合 RAM。

奇怪,由于 Octave 是一个大数据集的包,对角线很重要,所以应该可以。

【问题讨论】:

    标签: matlab matrix octave matrix-multiplication diagonal


    【解决方案1】:

    对角线上的第一个元素是 A 的第一行与 B 的第一列的标量积。对角线上的第二个元素是 A 的第二行与 B 的第二列的标量积。

    换句话说:

    vector = sum(A.*B',2);
    

    【讨论】:

    • 我看到您很好地利用了 5 分钟的宽限期进行编辑。 ;)
    • 我很高兴存在宽限期。一旦我点击提交,我似乎只看到我的主要错误。 :)
    【解决方案2】:

    这就是您在 MATLAB 中的做法(可能类似于 Octave 语法):

    vector = sum(A.*B',2);
    

    这将仅计算运算A*B 的结果对角线作为列向量vector

    【讨论】:

      【解决方案3】:

      实际上我认为它是A的第一行与B的第一的点积......第二个对角线元素是第二行和第二列的点积.. .等

      【讨论】:

        猜你喜欢
        • 2014-07-17
        • 2017-07-23
        • 1970-01-01
        • 1970-01-01
        • 2014-03-09
        • 1970-01-01
        • 2018-10-06
        • 1970-01-01
        • 2019-10-02
        相关资源
        最近更新 更多