I’m trying to implement a Blind Source Separation (BSS) algorithm and I’m running into trouble determining the efficacy of the algorithm.
I’m trying to create test cases where I work backwards and start with a signal vector s, which is normally unknown, and then create a mixing matrix A, which I use to transform s to create the observation vector x, which is what is normally observed by things like sensory equipment. Therefore I have a model that looks like
x = A * s.
I then put x into the BSS algorithm and get s’, which is a reconstruction of the signal vector.
Now this is where I have a lot of problems; how can I compare s’ and s, and get a quantitative measure of how similar the two vectors are? The algorithm I am studying can only reconstruct the signal vector up to a negative sign (therefore it is possible for s’ to be similar to -s, or stated in another way, for s' to be similar in "shape" to s but flipped) and cannot guarantee the preservation of the amplitudes of the signals. So I want to compare the “shapes” of the signals to each other, while also anticipating the fact that while their "shapes" might be similar, they might be flipped.
Just to clarify, when I say signal, I really mean a matrix that could be something like 50 x 10000 (50 different channels with 10000+ data points taken over time). Another problem that arises from the BSS algorithm is that the ordering of the channels is not guaranteed to be preserved. So given s'1, s'2, s'3, ... , s'N, which would be the different channels of s', might be reconstructed (again, perhaps flipped and of different amplitudes compared to the original channels in s), but the ordering is not guaranteed to be preserved. So s'1 might correlate instead to s23, and s'2 to s5, and so on and so forth.
So I was wondering if there's a fast and efficient way of comparing the similarity between two different matrices, which are assumed to be composed of vectors that should correlate to one another, although not in the same order, sign, or amplitude.
What would be the best way to solve this? Appreciate the help!