Take the 2-minute tour ×
Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

I have the following problem. Let $A$, $B$ $C$ be real-valued matrices of size $m \times q$, $m \times n$, $p\times q$ respectively. I would like to find matrix $X$ of size $n\times p$ and maximum rank $r$ such that the Frobenius norm $\|A - B X C \|$ is minimized. This is a generalization of the best approximation property of the truncated Singular Value Decomposition; however it doesn't appear to be trivial. Any insights? Known literature?

share|improve this question

1 Answer 1

Here is an idea:

The equation $A = BXC$ can be transformed to $(C^T \otimes B) \operatorname{vec} X = \operatorname{vec} A$ where $\operatorname{vec}$ is vectorization and $\otimes$ is Kronecker product. This transforms the problem to a standard matrix problem (there are also other ways of solving a matrix equation of this type) which can be solved using e.g. Gauss-Jordan elimination.

If the equation $(C^T \otimes B) \operatorname{vec} X = \operatorname{vec} A$ is not solvable, i.e. $\operatorname{vec} A$ is not in the image of $C^T \otimes B$, find the vector in the image of $C^T \otimes B$ closest to $\operatorname{vec} A$. This can be done by finding an orthogonal basis for the image of $C^T \otimes B$ and projecting $\operatorname{vec} A$ onto these vectors. In other words, find a least squares "solution" to the system $(C^T \otimes B) \operatorname{vec} X = \operatorname{vec} A$.

It should be noted in the above argument, that since we are using the Frobenius norm, $\|A\|$ and $\| \operatorname{vec} A\|$ will be equal, and also that $$\|\operatorname{vec} (A - BXC)\| = \| \operatorname{vec} (A) -\operatorname{vec}(BXC) \| = \| \operatorname{vec} A - (C^T \otimes B) \operatorname{vec} X\|.$$

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.