# Calculating SNR of a complex-valued signal correctly

I have an array of complex-valued data. I would like to modify the array by injecting an artificial signal at a chosen Signal to Noise ratio.

I have seen the signal to noise ratio for complex-valued data calculated as:

$$SNR = \frac{}{}$$

Right now, I am assuming my data is all noise and calculating the denominator by taking the mean of the real part of the data multiplied by its imaginary part.

One problem I have with this equation is that it would imply that if I added a constant real signal to all the data (for example just adding $$0.5 + 0j$$) the SNR of the added signal would be zero since its imaginary part is zero and hence $$SS^*$$ is zero. Obviously this doesn't make sense. So how do I correctly calculate the SNR of an added signal? I'm looking for a way of determining $$a$$ and $$b$$ in a complex number $$a+ib$$ added to all the data, such that the resulting data has an artificial signal of $$SNR = X$$ embedded in it.

• $\langle S, S^*\rangle\ne0$ in every case but $S$ being all zeros. Not quite sure why you think that would be the case? So, probably, you've got the formula for the inner product wrong. – Marcus Müller Jul 31 '20 at 7:04