One tap equalizer design (MMSE equalizer and ZF equalizer)
Show older comments
Guys, these are my code to generate the BER vs SNR for MMSE equalizer and ZF equalizer for N tap of channel. I dunno why the ZF equalizer are showing a better result than the MMSE equalizer.
1) Is there any problem with my code? Is there anyway to simplify the code?
clc
clear
format long
N=100000;
SNRDB=6:2:16;
I_da=sign(rand(1,N)-0.5);
Q_da=sign(rand(1,N)-0.5);
s=I_da+1i*Q_da;
for i=1:length(SNRDB)
SNRLIN=10^(SNRDB(i)/10);
n=1/sqrt(2*10^(SNRDB(i)/10))*(randn(1,N)+1i*randn(1,N));
h=1/sqrt(2)*(randn(1,N)+1i*randn(1,N));
y=h.*s+n;
for j=1:3
if j==1
W(1,:) = ones(size(h));
elseif j==2
W(2,:)= 1./h;
elseif j==3
W(3,:)= conj(h)./((abs(h)).^2+n);
else
error('Unimplemented Equalizer');
end
z = W .* y;
z_=sign(real(z))+1i*sign(imag(z));
end
BER_no(i)=sum(s~=z_(1,:))/N;
BER_ZF(i)=sum(s~=z_(2,:))/N;
BER_MMSE(i)=sum(s~=z_(3,:))/N;
end
ax = [6 16 1e-04 8e-01];
axis(ax)
semilogy( SNRDB, BER_no, '*-k', SNRDB,BER_ZF, 'o--r',SNRDB, BER_MMSE, '>-b');
xlabel('E_b/N_0 [dB]');
ylabel('BER');
title('Equalizer for OFDM system');
legend('No Equalizer','ZF Equalizer','MMSE Equalizer');
grid on;
2) If now i wanna generate 11-tap channel, I will have to change the N to 11, but the code wont work if I just change like that. Any suggestion on this?
h=1/sqrt(2)*(randn(1,N)+1i*randn(1,N));
Accepted Answer
More Answers (1)
Chaitanya Mallela
on 12 Mar 2020
1. The Optimum response of MMSE equalizer has to be changed
W(3,:)= conj(h)./((abs(h)).^2+(var(n)/var(s)));
It is observed that the MMSE equalizer response is similar to ZF equalizer. But the significance of MMSE equalizer is that it does not amplify the noise term to recover the original signal in the deep nulls of the channel.
Try this by checking the code
[p,ind]=min(h)
abs(z(3,ind)) < abs(z(2,ind))
2. To satisfy the Central Limit Theorem, cumulative sum of large samples of Random Variables are necessary to approximate to Gaussian Random Variable.
Categories
Find more on Link-Level Simulation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!