필터 지우기
필터 지우기

Transmitting a signal over a LTI frequency selective channel

조회 수: 4 (최근 30일)
S. David
S. David 2014년 6월 4일
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개)

카테고리

Help CenterFile Exchange에서 PHY Components에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by