2015-01-11 1 views
3

В Джулии, я могу создать разреженную матрицу нулей:матрица разреженных комплексных чисел в Джулии

julia> a = spzeros(2,2) 
2x2 sparse matrix with 0 Float64 entries: 

julia> a[1,1] = 1 
1 

julia> full(a) 
2x2 Array{Float64,2}: 
1.0 0.0 
0.0 0.0 

и я могу создать сложную матрицу:

julia> b = [ 1 ; im ] 
2-element Array{Complex{Int64},1}: 
1+0im 
0+1im 

Если я пытаюсь назначить комплекс значение для разреженной матрицы нулей я получаю сообщение об ошибке:

julia> a[1,1] = im 
ERROR: InexactError() 
in setindex! at sparse/sparsematrix.jl:1095 

, которая согласуется с spzeros() возврата тип изд время параметризованные Float64:

julia> typeof(a) 
SparseMatrixCSC{Float64,Int64} (constructor with 1 method) 

Как я могу создать разреженную матрицу комплексных типизированных нулей в Джулию?

ответ

6

Глядя на то, что мы можем перейти к spzeros:

julia> methods(spzeros) 
# 5 methods for generic function "spzeros": 
spzeros(m::Integer,n::Integer) at sparse/sparsematrix.jl:406 
spzeros(Tv::Type{T<:Top},m::Integer,n::Integer) at sparse/sparsematrix.jl:407 
spzeros(Tv::Type{T<:Top},Ti::Type{T<:Top},m::Integer,n::Integer) at sparse/sparsematrix.jl:409 
spzeros(m::Integer) at deprecated.jl:28 
spzeros(Tv::Type{T<:Top},m::Integer) at deprecated.jl:28 

Мы видим, что мы должны быть в состоянии передать тип в качестве первого аргумента:

julia> a = spzeros(Complex{Float64}, 2,2) 
2x2 sparse matrix with 0 Complex{Float64} entries: 

julia> full(a) 
2x2 Array{Complex{Float64},2}: 
0.0+0.0im 0.0+0.0im 
0.0+0.0im 0.0+0.0im 

julia> a[1,1] = 2+3.4im 
2.0 + 3.4im 

julia> a 
2x2 sparse matrix with 1 Complex{Float64} entries: 
    [1, 1] = 2.0+3.4im 

 Смежные вопросы

  • Нет связанных вопросов^_^