# 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.