首页 > 解决方案 > Julia 矩阵运算

问题描述

我正在寻找矩阵运算。但不确定是否有现有的操作。

例如:P=[1 2 ; 3 4] 和 Q=[5 6 ; 7 8]

[P ; Q] @ [P ; Q] => [P*P ; P*Q ; Q*P ; Q*Q]

@ 是我正在寻找的操作。谢谢!

标签: matrixjuliaoperation

解决方案


您可以定义您的自定义运算符,例如:

function ⊗(a::Matrix,b::Matrix)
    h1 = Int(size(a,1)/2)
    P1 = @view a[1:h1,:]
    Q1 = @view a[h1+1:end,:]
    h2 = Int(size(b,1)/2)
    P2 = @view b[1:h2,:]
    Q2 = @view b[h2+1:end,:]
    [P1*P2 ; P1*Q2 ; Q1*P2 ; Q1*Q2]
end

现在使用它!

julia> [P ; Q] ⊗ [P ; Q] == [P*P ; P*Q ; Q*P ; Q*Q]
true

也许您需要添加检查大小等。您可能还希望拥有额外的运算符函数 ⊗(a::Tuple{Matrix,Matrix},b::Tuple{Matrix,Matrix}) 所以你不需要合并PQ矩阵,然后再分解它们。


推荐阅读