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