Codes
Matrix Analysis
The following Matlab scripts solve L1-PCA exactly, or approximately. Please, see also our MathWorks® Toolbox.
Exact L1-PCA (exhaustive search)
Returns: K ≥ 1 L1-PCs (exact solution).
Method: Exhaustive search over entire binary field.
Complexity: Exponential in N and K; linear in D.
Exact L1-PCA (rank-based polynomial time)
Returns: K ≥ 1 L1-PCs (exact solution).
Method: Polynomial search over subset of binary field.
Complexity: Polynomial in N; exponential in d and K (for fixed d w.r.t. N)
Approximate L1-PCA (L1-BF)
Returns: K ≥ 1 L1-PCs (approximate solution).
Method: Single-bit Flipping.
Complexity: Quadratic in N; at most quadratic in D; at most quadratic in K; linear in d.
Tensor Analysis
The following Matlab scripts solve L1-TUCKER2 exactly and approximately.
Exact L1-Tucker2 (rank-1 decomposition)
Returns: Rank-1 PCs of (D by M by N) tensor.
Method: Exhaustive search over entire binary field.
Complexity: Exponential in N; linear in D and M.
Approximate L1-Tucker2 (alternating optimization)
Returns: Rank-K PCs of (D by M by N) tensor.
Method: Alternating maximization.
Complexity: Linear in D, M, N; quadratic in K; linear in number of iterations.
Approximate L1-Tucker (L1-HOSVD)
Returns: L1-Tucker bases of n-way tensor
Method: Parallel L1-PCAs per mode unfolding
Approximate L1-Tucker (L1-HOOI)
Returns: L1-Tucker bases of n-way tensor
Method: Joint basis optimization
Demo for L1-Tucker codes