I'll now go into the example experiment defined above.

For now we can just deal with the first two equations above, and leave out the error terms for now.

[y1] = [d1][k1][d2]

[y2] = [d1][k2][d2]

We can get this into a general matrix equation in the form AX = XB (A and B are known, X unknown) with the following series of operations:

1) Multiply the first eqn by the inverse of the second:

[y1]([y2]^-1) = [d1][k1][d2]([d2]^-1)([k2]^-1)([d1]^-1)

2) Cancel [d2] (because X*X^-1 = Identity matrix):

[y1]([y2]^-1) = [d1][k1]([k2]^-1)([d1]^-1)

3) Multiply by [d1] to move [d1] to the other size:

[y1]([y2]^-1) [d1]= [d1][k1]([k2]^-1)

The equation above has only one unknown matrix, [d1], so we can multiply the known matrices together to get an equation of the form AX=XB where [d1] is X. From here we have a problem that has been solved before, and we can do some more math (covered here: MATRICES - Existence of non-trivial solution of Sylvester equation. - efreedom) to get the following result:

(I⊗A−(B.*)⊗I)vec(X)=0

This is a linear equation! There is of course the trivial solution where X can equal 0, but taking the null space of the left side of the equation should give us the solutions. We can follow the same above procedure using more sets of data (y3, k3, y4, k4, etc.) so that we should be able to pin down the exact solution.

I have run the example above with random input data in matlab but without much success. Is there something I am missing here? Also, how do I determine how many data sets I need? ALSO, I am totally lost when it comes to the effect the error terms will have when I use this method on read data sets. Any clarification of the effects would be very much appreciated! Thanks!