# Correlated signals separation with reference

I have a signal S, which needs to be split into two components Sx and Sy.

And I have a signal X, which is a reference signal corresponding to Sx.

I need to perform this split of S and check that resulting Sy is ~Y and Sx ~X (I can use X in the process of filtering\separation, but not Y).

This sounds like a typical denoising task, that can be accomplished with LMS\RLS filters, but in my case signals X and Y are correlated and their BW are overlapping.

They are also non-stationary:
- sometimes X amplitude can decrease to almost 0, then Sx is also 0 and Sy should be estimated as simply S.
- sometimes both X and Y are 0 for a short period of time.
- most of the time X and Y are approx sinusoidal signals with similar central frequencies, one might be slightly shifted w.r.t another.

I tried regular LMS\RLS approaches - assume Sx is noise -> S = Sy + noise, but due to crosscorrelaton between S,X and Y the algorithms best guess is S = Sy.

1) How would you try to solve this? 2) What if we can use Y as well, at least for the beginning? Would it make it simpler?

3) More specific question. Now I have S,X,Y amplitudes in arbitrary units (adc counts). Is it better to scale them? Otherwise, I assume, choice of Sx and Sy will be dependent on amplitude ratios of the signals, or not?

I followed the link from you more current version. I think your problem is better stated here.

1) I don't think you can solve it as stated. You will have a one unknown parameter family of solutions.

2) If you can use a portion of Y, and the coefficients remain the same, you can easily solve it.

$$\vec S = a \vec X + b \vec Y$$

Dot this equation with $\vec X$ and $\vec Y$:

$$( \vec S \cdot \vec X ) = a ( \vec X \cdot \vec X ) + b ( \vec Y \cdot \vec X )$$ $$( \vec S \cdot \vec Y ) = a ( \vec X \cdot \vec Y ) + b ( \vec Y \cdot \vec Y )$$

This is a solvable system of two equations, two unknowns.

3) Rescaling will not affect the values of $a$ and $b$.

Hope this helps.

Ced

Followup

If you expect that $a$ and $b$ may be changing, then I think this problem is basically intractable. At least this approach would be.

These vector equations will apply to any subset of your signal. You will get the best values for $a$ in sections where you guess that $\vec Y$ is small, and the best values for $b \vec Y$ where $\vec X$ is small (as you already stated). Also, if you can determine sections where $\vec X \cdot \vec Y = 0$ (completely uncorrelated), you will also get good readings on $a$ and $b \vec Y$. In sections where they are highly correlated, you will get unreliable values for $a$ and $b \vec Y$.

If you have a rough idea of what $a$ is, you can find uncorrelated sections by looking for intervals where $( \vec S - a \vec X ) \cdot \vec X \approx 0$, but this won't get you a better value for $a$ because that's what you started with.

There is no way to separate $b$ from $b \vec Y$ unless you know something about $\vec Y$.

Any kind of linear transform is going to look like this:

$$T( \vec S ) = a T( \vec X ) + b T( \vec Y )$$

I'm not sure if that could be helpful, I doubt it.

• Thank you @Cedron for the answer. Can't we somehow give initial values to a and b and run adaptive filtering with some (custom) cost function to find best Y? Then, with the next batch of data we see how X has changed, make a guess, how Y (or a/b) might have changed... – Andrey Mar 23 '18 at 9:44
• @Andrey, You're welcome. I've added a followup. – Cedron Dawg Mar 23 '18 at 12:55