# Transmitting a signal over a LTI frequency selective channel

5 views (last 30 days)
S. David on 4 Jun 2014
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