0% found this document useful (0 votes)
44 views2 pages

CTS Ass Matlab

This document simulates a communication system using binary phase-shift keying (BPSK) over an inter-symbol interference (ISI) channel. It generates random input bits, passes them through the ISI channel, and recovers the bits using zero-forcing and minimum mean-squared error equalization. It then calculates the bit error rates for each method and plots them alongside the theoretical error rate curve.

Uploaded by

Lone One
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
44 views2 pages

CTS Ass Matlab

This document simulates a communication system using binary phase-shift keying (BPSK) over an inter-symbol interference (ISI) channel. It generates random input bits, passes them through the ISI channel, and recovers the bits using zero-forcing and minimum mean-squared error equalization. It then calculates the bit error rates for each method and plots them alongside the theoretical error rate curve.

Uploaded by

Lone One
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

4)

clear
N = 10^6;
Eb_N0_dB = [0:15];
K = 3;

for ii = 1:length(Eb_N0_dB)
ip = rand(1,N)>0.5;
s = 2*ip-1;
nTap = 3;
ht = [0.2 0.9 0.3];
L = length(ht);

chanOut = conv(s,ht);
n = 1/sqrt(2)*[randn(1,N+length(ht)-1) + j*randn(1,N+length(ht)-1)];

y = chanOut + 10^(-Eb_N0_dB(ii)/20)*n;

hM = toeplitz([ht([2:end]) zeros(1,2*K+1-L+1)], [ ht([2:-1:1]) zeros(1,2*K+1-L+1) ]);


d = zeros(1,2*K+1);
d(K+1) = 1;
c_zf = [inv(hM)*d.'].';
yFilt_zf = conv(y,c_zf);
yFilt_zf = yFilt_zf(K+2:end);
yFilt_zf = conv(yFilt_zf,ones(1,1));
ySamp_zf = yFilt_zf(1:1:N);

hAutoCorr = conv(ht,fliplr(ht));
hM = toeplitz([hAutoCorr([3:end]) zeros(1,2*K+1-L)], [ hAutoCorr([3:end]) zeros(1,2*K+1-L)
]);
hM = hM + 1/2*10^(-Eb_N0_dB(ii)/10)*eye(2*K+1);
d = zeros(1,2*K+1);
d([-1:1]+K+1) = fliplr(ht);
c_mmse = [inv(hM)*d.'].';
yFilt_mmse = conv(y,c_mmse);
yFilt_mmse = yFilt_mmse(K+2:end);
yFilt_mmse = conv(yFilt_mmse,ones(1,1));
ySamp_mmse = yFilt_mmse(1:1:N);

ipHat_zf = real(ySamp_zf)>0;
ipHat_mmse = real(ySamp_mmse)>0;

nErr_zf(1,ii) = size(find([ip- ipHat_zf]),2);


nErr_mmse(1,ii) = size(find([ip- ipHat_mmse]),2);

end
simBer_zf = nErr_zf/N;
simBer_mmse = nErr_mmse/N;
theoryBer = 0.5*erfc(sqrt(10.^(Eb_N0_dB/10)));

close all
figure
semilogy(Eb_N0_dB,simBer_zf(1,:),'bs-','Linewidth',2);
hold on
semilogy(Eb_N0_dB,simBer_mmse(1,:),'gd-','Linewidth',2);
axis([0 14 10^-5 0.5])
grid on
legend('sim-zf', 'sim-mmse');
xlabel('Eb/No, dB');
ylabel('Bit Error Rate');
title('Bit error probability curve for BPSK in ISI with MMSE equalizer');

You might also like