# How can I solve this matrix?

I have a set of RGB colour values detected by a camera $C_{i_{RGB}}$ which are to be described by the following:

$C_{i_{RGB}} = X F_{i_{rgb}}$

where $F_{i_{rgb}}$ is the component incident light at the detector, where the components $rgb$ are fixed at narrow bands and $X$, an $(n\times 3)$ matrix, is a description of the colour band overlap (cross talk if you will) for specific frequencies. In a simplified RGB scheme, $X$ would be described:

\begin{align} \mathsf X &= \begin{bmatrix} 1 & R_{GR} & R_{BR} \\ R_{RG} & 1 & R_{BG} \\ R_{RB} & R_{G} & 1 \end{bmatrix}\end{align}

That is, the diagonal entries of $X$ are $1$'s, and the off-diagonals are rational.

How can I solve for the values of $X$ only knowing $C_{i_{RGB}}$? Eventually, given $C_i$ I need to find the corresponding $F_i$ using the constant $X$.

Eventually added colour bands (band passes) will be added which will turn the above relation into something like this (and I fear the case where I have 5, 6, and 7 band passes to deal with):

\begin{bmatrix} C_{i_R} \\ C_{i_G} \\ C_{i_B} \end{bmatrix} = \begin{align}\begin{bmatrix} X_{aR} & X_{bR} & X_{cR} & X_{dR} & X_{eR} & X_{fR} \\ X_{aG} & X_{bG} & X_{cG} & X_{dG} & X_{eG} & X_{fG} \\ X_{aB} & X_{bB} & X_{cB} & X_{dB} & X_{eB} & X_{fB} \end{bmatrix}\end{align}\begin{bmatrix} F_{i_a} \\ F_{i_b} \\ F_{i_c} \\ F_{i_d} \\ F_{i_e} \\ F_{i_f} \end{bmatrix}

This is for a graphics programming application and I lament that my first year algebra was 20 years ago.

-
Wait, only the $C_i$ are known, and you don't know both the $F_i$ and $X$? – J. M. Sep 3 '10 at 0:03
Thats right. I'm I out of luck? Or would it help if I increase my sample of $C_i$ such that such that $i \gg n$? – Jamie Sep 3 '10 at 1:24
The problem as stated is ill-posed; for i = 3 I count 15 unknowns (6 unknown entries of X and 3 unknowns each of F₁, F₂ and F₃). If you could edit your question to explain the motivation and how the problem arose, people may be able to help you better. – Rahul Sep 3 '10 at 2:15
Yes, your "graphics programming application" seems familiar, but I'd rather not guess. Please post your actual problem. – J. M. Sep 3 '10 at 2:17
I think I've captured the 'actual problem' Thanks for your interest. – Jamie Sep 3 '10 at 12:35

Okay, as already mentioned the problem as posed is not tractable. However, reading between the lines, it looks to me a lot like Independent Components Analysis could work.

Basically, assuming you have a sequence of such observations from the same sources, and its reasonable to assume that the individual sources are independent of each other, then the original signals can be recovered up to scaling and order.

Here's a link to a nice tutorial paper by Aapo Hyvarinen: http://www.cs.helsinki.fi/u/ahyvarin/papers/NN00new.pdf

-
+1 one for giving me a name (via the reference) to my problem "Cocktail-Party Problem". I've got significant Google traction now. – Jamie Sep 3 '10 at 14:59
Glad to be of help. You might also try searching on "blind source separation" which is another name for ICA. – Bob Durrant Sep 3 '10 at 15:07
This is awesome. From the link "All we observe is the random vector x, and we must estimate both A and s using it. This must be done under as general assumptions as possible." – Jamie Sep 3 '10 at 15:08
"Blind Source Separation" is mentioned in the tutorial. – Jamie Sep 3 '10 at 15:10

If you don't know both $X$ and $F_i$ then you have an infinite number of solutions.

-
huh. Thats a kick in shins. – Jamie Sep 3 '10 at 1:31

If I understand correctly, you're trying to correlate $n$ separate equations for $n$ different values of $C_i$ and $F_i$ into a solution for $X$; is that correct? If so, then the easiest way to go is to turn your set of vector equations into a matrix equation! Simply write $C = [ C_1 C_2 C_3 \ldots C_n ]$ (assuming that the $C_n$ are being written as column vectors), $F = [ F_1 F_2 F_3 \ldots F_n ]$, and then by linearity you wind up with a single matrix equation $C = X F$ which can be solved by inverting F (if F isn't invertible then you have no guaranteed solution) and writing $X = C F^{-1}$.

-
I don't actually know $F$. Otherwise that's the sort of elegance I was hoping for. – Jamie Sep 3 '10 at 1:25
What base problem are you trying to solve? My graphics skills are still pretty sharp; I may be able to tell you whether there's another way of framing your base question that means you don't have to work with underdetermined systems... – Steven Stadnicki Sep 3 '10 at 2:17
I hope have framed the question so that you whittle away a suggestion. – Jamie Sep 3 '10 at 12:36

Theoretically from LA, you cannot solve this equation since you got too many unknowns than the equations. But we can reconciliate and use the least square solution to find an estimation as in the following:

Denote $C,X,F$ resepectively the vector,matrix and the second vector appeared in sequence in your equation from the left hand side to the right hand side. Then it can be rewritten as
$C = XF$ where $C: 3\times 1, X: 3\times 6, F: 6\times 1$. Now we denote $A=X^T X$ (the transpose of X times X), then $rank(A)=rank(X)$ is less than or equal to 3, so it is singular, or not invertible. We therefore take the pseudoinverse or generalized inverse (google generalized inverse of matrices if you are not familiar with it), and we can prove that the best choice shall be $F = (X^T X)^- X^T C$ where A^- denotes the pseudoinverse of A. Notice that in this situation even the 'best' solution need not to be unique.

Richard

-
Since $\mathbf A$ is rank deficient, you can't use $(\mathbf X^T \mathbf X)^{-1}\mathbf X^T$ to represent the Moore-Penrose inverse; rather, you have to use the singular value decomposition... – J. M. May 7 '11 at 17:22
that is not $(X^T X)^{-1} X^T$, but $(X^T X)^{-} X^T$. Here surely $(X^T X)^{-}$ can be obtained by using SVD. – Richard May 10 '11 at 5:23