Added bidiag struct + decomp function
This commit is contained in:
parent
76eb148928
commit
46a6c0c238
1 changed files with 36 additions and 0 deletions
36
src/TR.jl
36
src/TR.jl
|
|
@ -22,6 +22,20 @@ struct TRSVD
|
|||
end
|
||||
|
||||
|
||||
struct TRBidiag
|
||||
W::Matrix{Float64}
|
||||
B::Bidiagonal{Float64, Vector{Float64}}
|
||||
T::Matrix{Float64}
|
||||
y::Vector{Float64}
|
||||
mX::Matrix{Float64}
|
||||
my::Float64
|
||||
regType::String
|
||||
regParam1::Float64
|
||||
regMat::Matrix{Float64}
|
||||
n::Int64
|
||||
p::Int64
|
||||
end
|
||||
|
||||
|
||||
"""
|
||||
### TO DO: ADD FRACTIONAL DERIVATIVE REGULARIZATION ###
|
||||
|
|
@ -71,6 +85,28 @@ return regMat
|
|||
end
|
||||
|
||||
|
||||
"""
|
||||
function TRBidiagDecomp(X, y, A=(minimum(size(X))-1), regType="L2", regParam1=0, regParam2=1e-14)
|
||||
|
||||
Calculates regularization matrix (using function "RegularizationMatrix"),
|
||||
and centres and transforms data matrix according to "X / regMat".
|
||||
Output is an object of type "TRBidiag" and is used as input to other TR functions.
|
||||
"""
|
||||
function TRBidiagDecomp(X, y, A=(minimum(size(X))-1), regType="L2", regParam1=0, regParam2=1e-14)
|
||||
|
||||
n, p = size(X);
|
||||
mX = mean(X, dims=1);
|
||||
X = X .- mX;
|
||||
my = mean(y);
|
||||
y = vec(y .- my);
|
||||
regMat = regularizationMatrix(X; regType, regParam1, regParam2);
|
||||
X = X / regMat;
|
||||
_, W, B, T = bidiag2(X, y, A);
|
||||
TRObj = TRBidiag(W, B, T, y, mX, my, regType, regParam1, regMat, n, p);
|
||||
|
||||
return TRObj
|
||||
end
|
||||
|
||||
|
||||
"""
|
||||
function TRSVDDecomp(X, regType="L2", regParam1=0, regParam2=1e-14)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue