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? – Marcus Müller Mar 2 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 – New_student Mar 2 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. – Marcus Müller Mar 2 at 10:18
• And as far as I can tell, your question is not about a space-time block code, is it? – Marcus Müller Mar 2 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! – Marcus Müller Mar 2 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].