KpNorm
kpNorm | |
Computes the (k,p)-norm of a vector or matrix | |
Other toolboxes required | none |
---|---|
Related functions | kpNormDual KyFanNorm SchattenNorm TraceNorm |
Function category | Norms |
Usable within CVX? | yes (convex) |
kpNorm is a function that computes the (k,p)-norm of a vector or matrix, defined as follows: \[\|v\|_{k,p} := \left(\sum_{j=1}^k |v_j^{\downarrow}|^p \right)^{1/p}, \quad \|X\|_{k,p} := \left( \sum_{j=1}^k \sigma_j^{\downarrow}(X)^p \right)^{1/p}.\] In the case of a vector, this is the p-norm of the vector's k largest (in magnitude) entries. In the case of a matrix, this is the p-norm of the vector of its k largest singular values. This norm generalizes many well-known norms including the vector p-norms, the operator norm (when k = 1), the trace norm (when p = 1 and k is the size of X), the Schatten p-norms (when k is the size of X), and the Ky Fan k-norms (when p = 1). It works with both full and sparse vectors and matrices.
Syntax
- NRM = kpNorm(X,K,P)
Argument descriptions
- X: A vector or matrix to have its (K,P)-norm computed.
- K: A positive integer.
- P: A real number ≥ 1, or Inf.
Examples
Generalizes the operator, trace, Ky Fan, and Schatten norms
The (K,P)-norm of a matrix is simply the usual operator norm when K = 1 or P = Inf:
>> X = rand(3);
>> [norm(X), kpNorm(X,1,Inf), kpNorm(X,2,Inf), kpNorm(X,3,Inf), kpNorm(X,1,5)]
ans =
1.0673 1.0673 1.0673 1.0673 1.0673
When P = 1 and K is the size of X, this norm reduces to the trace norm:
>> [kpNorm(X,3,1), TraceNorm(X)]
ans =
1.6482 1.6482
More generally, when P = 1 this norm reduces to the Ky Fan K-norm:
>> [kpNorm(X,2,1), KyFanNorm(X,2)]
ans =
1.5816 1.5816
Similarly, when K = min(size(X)) this norm reduces to the Schatten P-norm:
>> [kpNorm(X,3,4), SchattenNorm(X,4)]
ans =
1.0814 1.0814
Source code
Click here to view this function's source code on github.