KpNormDual

kpNormDual is a function that computes the dual of the (k,p)-norm of a vector or matrix. More explicitly, the (k,p)-norm of a vector $x = (x_1,x_2,\ldots,x_n)$ is
 * $$\|x\|_{(k,p)} := \left(\sum_{j=1}^k \big|x_i^\downarrow\big|^p \right)^{1/p},$$

where $(x_1^\downarrow,x_2^\downarrow,\ldots,x_n^\downarrow)$ is a rearrangement of the vector $x$ with the property that $|x_1^\downarrow| \geq |x_2^\downarrow| \geq \cdots \geq |x_n^\downarrow|$. Similarly, the (k,p)-norm of a matrix is the (k,p)-norm of its vector of singular values. This function computes the dual of this norm, which is fairly complicated and was derived in. This function works with both full and sparse vectors and matrices.

Syntax

 * NRM = kpNormDual(X,K,P)

Argument descriptions

 * X: A vector or matrix to have its norm computed.
 * K: A positive integer.
 * P: A real number &ge; 1, or Inf.

A simple 4-by-4 example
The (k,p)-norm of a matrix when k = 1 is simply the operator norm. The dual of the operator norm is the trace norm, so when k = 1 this function just returns the trace norm (regardless of p):

Similarly, if K = min(size(X)) and P = 2 then kpNorm(X,K,P)</tt> is the Frobenius norm, which is its own dual. Thus kpNormDual(X,K,2)</tt> decreases from the trace norm of X</tt> to its Frobenius norm as K</tt> increases: