SchattenNorm
SchattenNorm | |
Computes the Schatten p-norm of an operator | |
Other toolboxes required | none |
---|---|
Related functions | InducedSchattenNorm kpNorm KyFanNorm TraceNorm |
Function category | Norms |
Usable within CVX? | yes (convex) |
SchattenNorm is a function that computes the Schatten p-norm of an operator (i.e., the p-norm of its vector of singular values): $$ \|X\|_p := \left(\sum_i \sigma_i^\downarrow(X)^p\right)^{1/p}, $$ where $\sigma_1^\downarrow(X) \geq \sigma_2^\downarrow(X) \geq \cdots$ are the singular values of $X$ in non-increasing order. This function works with both full and sparse matrices, and it can be used within CVX.
Syntax
- NRM = SchattenNorm(X,P)
Argument descriptions
- X: An operator to have its Schatten P-norm computed.
- P: A real number ≥ 1, or Inf.
Examples
Equals the Frobenius norm when P = 2
The Shatten 2-norm is simply the Frobenius norm:
>> X = rand(2500);
>> [norm(X,'fro'), SchattenNorm(X,2)]
ans =
1443.6 1443.6
Can be used within CVX
Like all norms, Schatten norms are convex, and this function can be used within CVX just like any other convex function. For example, the following code finds the smallest Schatten 3-norm of any 4-by-4 density matrix whose (1,2)-entry equals 1/8:
>> cvx_begin sdp quiet
variable rho(4,4) hermitian
minimize SchattenNorm(rho,3)
subject to
trace(rho) == 1;
rho >= 0;
rho(1,2) == 1/8;
cvx_end
>> cvx_optval
cvx_optval =
0.4400
>> rho
rho =
0.2344 + 0.0000i 0.1250 + 0.0000i -0.0000 - 0.0000i -0.0000 - 0.0000i
0.1250 + 0.0000i 0.2344 + 0.0000i -0.0000 - 0.0000i -0.0000 - 0.0000i
-0.0000 + 0.0000i -0.0000 + 0.0000i 0.2656 + 0.0000i 0.0000 - 0.0000i
-0.0000 + 0.0000i -0.0000 + 0.0000i 0.0000 + 0.0000i 0.2656 + 0.0000i
>> SchattenNorm(rho,3)
ans =
0.4400
Source code
Click here to view this function's source code on github.