将下三角矩阵变换为矢量[JULIA]

vin*_*cet 1 vector matrix julia

l具有n乘n的矩阵,其转换为下三角矩阵.然后我想使用vec()转换下部的traingular矩阵,但它不起作用.这是我的代码错误

x=rand(4,4)
4x4 Array{Float64,2}:
 0.453539  0.00897806  0.590051  0.401164
 0.219694  0.322613    0.826784  0.528058
 0.216173  0.752796    0.318784  0.721735
 0.648246  0.0184203   0.6562    0.69907 

c=LowerTriangular(x)

4x4 LowerTriangular{Float64,Array{Float64,2}}:
 0.453539  0.0        0.0       0.0    
 0.219694  0.322613   0.0       0.0    
 0.216173  0.752796   0.318784  0.0    
 0.648246  0.0184203  0.6562    0.69907

vec(c)
ERROR: ArgumentError: Triangular matrix must have two dimensions
 in similar at linalg/triangular.jl:27
 in reshape at abstractarray.jl:213
 in vec at abstractarraymath.jl:14
Run Code Online (Sandbox Code Playgroud)

是否有任何函数将三角矩阵转换为向量?

谢谢

小智 5

您可以使用 collect

julia> x=rand(4,4)
4x4 Array{Float64,2}:
 0.98258   0.786791  0.776911  0.282855
 0.881244  0.270507  0.557487  0.376426
 0.915609  0.165074  0.388279  0.107354
 0.461926  0.210621  0.676718  0.161106

julia> y=LowerTriangular(x)
4x4 LowerTriangular{Float64,Array{Float64,2}}:
 0.98258   0.0       0.0       0.0     
 0.881244  0.270507  0.0       0.0     
 0.915609  0.165074  0.388279  0.0     
 0.461926  0.210621  0.676718  0.161106

julia> collect(y)
16-element Array{Float64,1}:
 0.98258 
 0.881244
 0.915609
 0.461926
 0.0     
 0.270507
 0.165074
 0.210621
 0.0     
 0.0     
 0.388279
 0.676718
 0.0     
 0.0     
 0.0     
 0.161106
Run Code Online (Sandbox Code Playgroud)