I have a a channel matrix "H" that is circulant. I have data blocks. I want to add the channel effects to the signal.

When H was only a vector of channel coefficients I would say:

%Going Through The Channel 
After_channel= filter(H,1,Data);

but now that H is a matrix the line above wouldn't work.

I'm not sure what to do


This is a small example of how to implement this in Matlab:

h=[0.4070; 0.8150; 0.4070]; % Channel: Proakis A
d=[1; -1; 1; 1]; % Data
H=convmtx(h,4);  % Channel Matrix

y1=H*d; % Matrix approach

y2=conv(h,d); % Convolution

| improve this answer | |

When you use the channel matrix (it is probably a convolution matrix), you just need to multiply it by the signal. Note that the output from this operation will not be equal the output from the filter function. The filter function generates an output from the same size of the input signal, so if your signal has a length of N, just the first N samples obtained from the multiplication will be the same. See the code posted by @Harris.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.