matrix - Julia 矩阵运算
问题描述
我正在寻找矩阵运算。但不确定是否有现有的操作。
例如:P=[1 2 ; 3 4] 和 Q=[5 6 ; 7 8]
[P ; Q] @ [P ; Q] => [P*P ; P*Q ; Q*P ; Q*Q]
@ 是我正在寻找的操作。谢谢!
解决方案
您可以定义您的自定义运算符,例如:
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}) 所以你不需要合并P
和Q
矩阵,然后再分解它们。
推荐阅读
- c# - ASP.NET Core 中的 AzureAD B2C ROPC 身份验证
- .net-core - 删除迁移和更新数据库实体框架核心时出错 从流中读取时出错
- reactjs - 如何配置 React 客户端、.NET Core 3.1 后端、单租户 SSO
- drake - np.linalg.solve() 是否不适用于 AutoDiff?
- r - 围绕 data.table 中的特定值对时间序列进行子集化
- java - java中的正则表达式(java字符串)
- html - 为什么我的页脚内的 2 个 div 进入不同的角落?
- c++ - std::function 来自“new”并输入
- java - 在 .war 中编译一个 java 类
- mysql - MySQL根据下一个和上一个项目查询订单项目