From d64ba34407496cb1e4b9f319ce516c1db2b5382c Mon Sep 17 00:00:00 2001 From: kalmar Date: Fri, 9 Jun 2017 11:56:17 +0200 Subject: [PATCH] dispatch sparsify! on the type of matrix --- Orb_AutFN.jl | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/Orb_AutFN.jl b/Orb_AutFN.jl index 9c731a5..52cc801 100644 --- a/Orb_AutFN.jl +++ b/Orb_AutFN.jl @@ -34,11 +34,23 @@ immutable Settings tol::Float64 end -function sparsify!{T}(U::AbstractArray{T}, eps=eps(T)) -# n = rank(U) +function sparsify!{T}(U::Array{T}, eps=eps(T)) + n = rank(U) + W = deepcopy(U) + W[abs.(W) .< eps] = zero(T) + if rank(W) != n + warn("Sparsification would decrease the rank!") + W = U + end + U = sparse(U) + dropzeros!(U) + return U +end + +function sparsify!{T}(U::SparseMatrixCSC{T}, eps=eps(T)) U[abs.(U) .< eps] = zero(T) -# @assert rank(U) == n - return sparse(U) + dropzeros!(U) + return U end sparsify{T}(U::AbstractArray{T}, eps=eps(T)) = sparsify!(deepcopy(U), eps)