[try&fail]把节点单元矩阵组装成全局带状稀疏矩阵.jl

两天了不知道如何聪明地实现(希望是惰性地):
(~=Matlab的Matrix2Array函数)

a = [1 2;3 4]
a_iwant = [1;2;3;4]

我的理解:依次取出每一行,然后按顺序拼接。

因为 julia 是列优先,默认拍平会按列拼接。
所以先转置一下。

Iterators.flatten 返回迭代器,符合惰性要求。

julia> Iterators.flatten(a')
Base.Iterators.Flatten{LinearAlgebra.Adjoint{Int64, Matrix{Int64}}}([1 3; 2 4])

julia> Iterators.flatten(a') |> collect
4-element Vector{Int64}:
 1
 2
 3
 4
vec(a)
a' |> vec |> collect  # PermutedDimsArray(a, (2, 1)) |> vec |> collect
vcat(eachrow(a)...)

https://github.com/JuliaLang/julia/pull/42736 的N5N3嘛 :heart_eyes:

是我 :grinning: :grin:
那个PR感觉没人搭理了 :rofl: :joy:

这 PR 太难了… 不好 review… 之前比较忙的时候快速的看了几遍但是没明白具体的意思… 也许后面稍微空闲一些会去尝试捡起来再看看…

Generator 本身有一些额外的性能开销,如果能想办法去掉这个的话可能会更容易接受一些。

谢谢建议 :ok_hand:
我有时间再想想看能不能把Generator去掉。
不过感觉蛮难的,现在这个@simd的底层不依靠Generator能传递的信息确实太少了。