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

Matrix 将下三角矩阵变换为向量[JULIA],matrix,vector,julia,Matrix,Vector,Julia,有一个n乘n的矩阵,它被变换成一个下三角矩阵。然后我想用vec()变换下三角矩阵,但它不起作用。这是我的代码错误 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

有一个n乘n的矩阵,它被变换成一个下三角矩阵。然后我想用vec()变换下三角矩阵,但它不起作用。这是我的代码错误

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
有没有把三角矩阵变换成向量的函数

谢谢你

x = rand(4,4)
c=LowerTriangular(x)
lower_triangular_matrix = convert(Array{Float64,2}, c)
l_t_vel = vec(lower_triangular_matrix)
似乎发生的是,您有一个类型LowerTriangular,而vec()函数不接受该类型作为参数,因此您只需将其转换回矩阵

编辑/附录

你可以用

methodswith(LowerTriangular)
methods(vec)
# 3 methods for generic function "vec":
vec{Tv,Ti}(S::SparseMatrixCSC{Tv,Ti}) at sparse/sparsematrix.jl:243
vec(a::AbstractArray{T,1}) at abstractarraymath.jl:15
vec(a::AbstractArray{T,N}) at abstractarraymath.jl:14
查看类型LowerTriangular出现在中的方法

你可以用

methodswith(LowerTriangular)
methods(vec)
# 3 methods for generic function "vec":
vec{Tv,Ti}(S::SparseMatrixCSC{Tv,Ti}) at sparse/sparsematrix.jl:243
vec(a::AbstractArray{T,1}) at abstractarraymath.jl:15
vec(a::AbstractArray{T,N}) at abstractarraymath.jl:14

要查看某个方法存在哪些“dispatches”(如果这是一个有意义的短语),可以使用
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

您也可以使用
[c..]