Transmitting a signal over a LTI frequency selective channel
    2 views (last 30 days)
  
       Show older comments
    
Hello all,
I am trying to transmit a sequence over linear time invariant (LTI) frequency selective channel, and process the received signal as in the attached file. I want to generate eq (4), and I tried to do this using the following MATLAB code:
clear all;
clc;
SNRdB=0:1.5:12;
SNR=10.^(SNRdB./10);
N=128;          %Number of symbols
fc=10*10^3;     %Carrier frequency
B=8000;         %Bandwidth from 30-34 KHz
Ts=1/B;         %Symbol time
nsamp=10^4;     %Number of samples per symbol
Ta=Ts/nsamp;    %Sample time
K=N*nsamp;      %Total number of samples
tau=[0 2].*10^-3; %Channel delays
Np=length(tau);
Taps_LocationsTa=round(tau/Ta);
ZP_ms=5*10^-3;    %Guard interval
Ng=round(ZP_ms/Ta);
h=[1 1];      %Channel gains
H=h.*exp(-1i*2*pi*fc.*tau);
bs=rand(N,1)>0.5; %BPSK signal
ds=2.*bs-1;
da= reshape(repmat(ds(:).',nsamp,1),1,[]);  %Repeat each symbol nsamp time
dZP=[da zeros(1,Ng)];
y=zeros(1,K+2*Ng);  
for pp=1:Np       %Implementing eq (3)
    yTemp=zeros(1,K+2*Ng);
    yTemp(Taps_LocationsTa(pp)+1:Taps_LocationsTa(pp)+K+Ng)=dZP;
    y=y+yTemp.*H(pp);
end
y(K+Ng+1:end)=[]; 
v=zeros(N,1);
for nn=0:N-1   %Implementing eq (4)
    for pp=1:Np
        v(nn+1)=v(nn+1)+(conj(H(pp)))*sum(y(nn*nsamp+1+Taps_LocationsTa(pp):(nn+1)*nsamp+Taps_LocationsTa(pp)))*Ta;
    end  
end
Here v represents the noise-free received signal and mathematically it can be written as v=H*ds, where H is the channel matrix. However, v (from the code above) and its numerical equivalent (H*ds) are not the same when I plot them. Is the code above correct, especially the integration part in the last for loop?
Thanks
0 Comments
Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!