# Using Spreading spectral with Maximal likelihood

As asked here, HERE if we have the signal

x =
[0.7 + 0.7i;
0.7 - 0.7i;
-0.7 + 0.7i;
-0.7 -0.7i];


Which was spread over code c and transmitted over channel H whose dimension is [4x4], so the convolution of signal after spreading will become:

r = reshape(H*reshape(x,4,[]),[],1);


comparing it with signal without spreading, it was

 r = H*x;


That was explained well in the above link.

My question, suppose I am using Maximum likelihood estimation, in case if we didn't spread the signal, we will check the likelhood compared with the channel H, but what's about after using spreading ? how will become the channel ? It supposed to be a vector of [16x1], is that right ? but how will it be ?

thank you!

• Please simply consider a single channel, not a whole channel matrix for a start; makes way more sense here, because the same is happening for the other channels, too. Would this simplification get you going? Mar 2, 2019 at 10:10
• Yes I got your idea, but i'm working now with single channel too, which is MIMO. the difference which I'm looking for is before spreading and after spreading Mar 2, 2019 at 10:16
• "single channel, which is MIMO" is a self-contradiction. (MIMO literally means multiple input, multiple output: You hence have multiple point-to-point channels.) You're confusing the vocabulary, and as much as I try, I don't understand you. Mar 2, 2019 at 10:18
• And as far as I can tell, your question is not about a space-time block code, is it? Mar 2, 2019 at 10:19
• you really don't understand MIMO well, we've had this exact discussion before: whether or not your individual point-to-point channels need to be convolved (i.e. have multiple taps, are frequency-selective) or are just coefficients (i.e. can be just multiplied coefficients from a matrix, are flat) has nothing to do with it being MIMO or not. You're seriously mixing up very basic things. And that's been going on for weeks! Mar 2, 2019 at 10:25

H was not reshaped, as you see in your command r = reshape(H*reshape(x,4,[]),[],1);, you reshaped the data itself.
In that case, you are going to add noise, then using ML estimation based on the received data. So that, H will be H without changing, what will be changed is the received data, you can reshape it similar to that way in the transmitter reshape(y,4,[]), where y is the received data, then reshape the results again into [16 x 1].