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.

Download code

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)

Download code

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.

Download code

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.

Download code

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.

Download code

Approximate L1-Tucker (L1-HOSVD)

  • Returns: L1-Tucker bases of n-way tensor

  • Method: Parallel L1-PCAs per mode unfolding

Download code

Approximate L1-Tucker (L1-HOOI)

  • Returns: L1-Tucker bases of n-way tensor

  • Method: Joint basis optimization

Download code

Demo for L1-Tucker codes

Download code