Properties
Size and Domains
Base.size — Function.size(A::AbstractOperator, [dom,])
Returns the size of an AbstractOperator. Type size(A,1) for the size of the codomain and size(A,2) for the size of the codomain.
Base.ndims — Function.ndims(A::AbstractOperator, [dom,])
Returns a Tuple with the number of dimensions of the codomain and domain of an AbstractOperator. Type ndims(A,1) for the number of dimensions of the codomain and ndims(A,2) for the number of dimensions of the codomain.
AbstractOperators.ndoms — Function.ndoms(L::AbstractOperator, [dom::Int]) -> (number of codomains, number of domains)
Returns the number of codomains and domains of a AbstractOperator. Optionally you can specify the codomain (with dom = 1) or the domain (with dom = 2)
julia > ndoms(DFT(10,10))
(1,1)
julia> ndoms(hcat(DFT(10,10),DFT(10,10)))
(1, 2)
julia> ndoms(hcat(DFT(10,10),DFT(10,10)),2)
2
julia> ndoms(DCAT(DFT(10,10),DFT(10,10)))
(2,2)AbstractOperators.domainType — Function.domainType(A::AbstractOperator)
Returns the type of the domain.
julia> domainType(DFT(10))
Float64
julia> domainType(hcat(Eye(Complex{Float64},(10,)),DFT(Complex{Float64},10)))
(Complex{Float64}, Complex{Float64})AbstractOperators.codomainType — Function.codomainType(A::AbstractOperator)
Returns the type of the codomain.
julia> codomainType(DFT(10))
Complex{Float64}
julia> codomainType(vcat(Eye(Complex{Float64},(10,)),DFT(Complex{Float64},10)))
(Complex{Float64}, Complex{Float64})AbstractOperators.displacement — Function.displacement(A::AbstractOperator)
Returns the displacement of the operator.
julia> A = AffineAdd(Eye(4),[1.;2.;3.;4.])
I+d ℝ^4 -> ℝ^4
julia> displacement(A)
4-element Array{Float64,1}:
1.0
2.0
3.0
4.0
AbstractOperators.remove_displacement — Function.remove_displacement(A::AbstractOperator)
Removes the displacement of the operator.
Properties
AbstractOperators.is_linear — Function.is_linear(A::AbstractOperator)
Test whether A is a LinearOperator
julia> is_linear(Eye(2))
true
julia> is_linear(Sigmoid(Float64,(2,)))
falseAbstractOperators.is_eye — Function.is_eye(A::AbstractOperator)
Test whether A is an Identity operator
julia> is_eye(Eye(10))
true
julia> is_eye(Zeros(Float64,(10,),(10,)))
false
AbstractOperators.is_null — Function.is_null(A::AbstractOperator)
Test whether A is null.
julia> is_null(Zeros(Float64,(10,),(10,)))
true
julia> is_null(Eye(10))
false
AbstractOperators.is_diagonal — Function.is_diagonal(A::AbstractOperator)
Test whether A is diagonal.
julia> is_diagonal(Eye(10))
true
julia> is_diagonal(FiniteDiff((10,)))
false
AbstractOperators.is_AcA_diagonal — Function.is_AcA_diagonal(A::AbstractOperator)
Test whether A'*A is diagonal.
julia> is_AcA_diagonal(Eye(10))
true
julia> is_AcA_diagonal(GetIndex((10,),1:3))
false
AbstractOperators.is_AAc_diagonal — Function.is_AAc_diagonal(A::AbstractOperator)
Test whether A*A' is diagonal.
julia> is_AAc_diagonal(Eye(10))
true
julia> is_AAc_diagonal(GetIndex((10,),1:3))
false
AbstractOperators.is_orthogonal — Function.is_orthogonal(A::AbstractOperator)
Test whether A is orthogonal.
julia> is_orthogonal(DCT(10))
true
julia> is_orthogonal(MatrixOp(randn(3,4)))
false
AbstractOperators.is_invertible — Function.is_invertable(A::AbstractOperator)
Test whether A is easily invertable.
julia> is_invertible(DFT(10))
true
julia> is_invertable(MatrixOp(randn(3,4)))
false
AbstractOperators.is_full_row_rank — Function.is_full_row_rank(A::AbstractOperator)
Test whether A is easily invertable.
julia> is_full_row_rank(MatrixOp(randn(3,4)))
true
julia> is_full_row_rank(MatrixOp(randn(4,3)))
falseAbstractOperators.is_full_column_rank — Function.is_full_row_rank(A::AbstractOperator)
Test whether A is easily invertable.
julia> is_full_column_rank(MatrixOp(randn(4,3)))
true
julia> is_full_column_rank(MatrixOp(randn(3,4)))
falseAbstractOperators.is_sliced — Function.is_sliced(A::AbstractOperator)
Test whether A is a sliced operator.
julia> is_sliced(GetIndex((10,), 1:5))
true