CTS Ass Matlab
CTS Ass Matlab
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;
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;
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');