Transmitting a signal over a LTI frequency selective channel

2 visualizzazioni (ultimi 30 giorni)
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

Risposte (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by