gpt4 book ai didi

julia - 连接 Julia 中的矩阵矩阵

转载 作者:行者123 更新时间:2023-12-05 01:05:17 24 4
gpt4 key购买 nike

我有一个按 block 构建的矩阵,如下所示:

parts = Matrix{SparseMatrixCSC{Float64}}(undef, r, r)
for i in 1:r
for k in 1:r
parts[i, k] = make_part(i, k)
end
end

现在我想将所有这些部分连接成一个更大的矩阵,每个 block 都在它的位置。有没有办法使用 Base 中的连接函数来做到这一点?我不知道如何使用 cat 来做到这一点。例如,reduce((a, acc) -> cat(acc, a, dims=(1, 2), parts) 将创建一个带有 r^2< 的 block 对角矩阵 对角线上的方 block 。

最佳答案

假设你有类似的东西:

parts = [sprand(2,2,0.7) for i in 1:2, j in 1:3]
2×3 Matrix{SparseMatrixCSC{Float64, Int64}}:

使用 BlockArrays 你可以这样做:

julia> mortar(parts)
2×3-blocked 4×6 BlockMatrix{Float64, Matrix{SparseMatrixCSC{Float64, Int64}}, Tuple{BlockedUnitRange{Vector{Int64}}, BlockedUnitRange{Vector{Int64}}}}:
⋅ 0.543703 │ ⋅ 0.773536 │ 0.390049 0.0287028
0.113945 0.422259 │ ⋅ 0.764168 │ 0.140334 ⋅
────────────────────┼─────────────────────┼─────────────────────
0.295535 0.286277 │ 0.81173 ⋅ │ 0.646139 0.0616408
0.641121 0.033793 │ ⋅ 0.754504 │ 0.995975 ⋅

关于julia - 连接 Julia 中的矩阵矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70732412/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com