One tap equalizer design (MMSE equalizer and ZF equalizer)
53 ビュー (過去 30 日間)
古いコメントを表示
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));
0 件のコメント
採用された回答
Idin Motedayen-Aval
2022 年 6 月 3 日
Answer provided by Chaitanya to item (1) is correct.
On item 2: Changing N to 11 (as the OP suggested) does not work because that is changing the number of random samples being generated (N is in fact the number of symbols being simulated here; not the number of channel taps).
Easiest way to simulate an 11-tap channel, is to use the comm.RayleighChannel object from the Communications Toolbox. Otherwise, you will have to implement that channel model yourself (this is by no means a trivial task!). You can read about the theory behind simulating fading channels here.
0 件のコメント
その他の回答 (1 件)
Chaitanya Mallela
2020 年 3 月 12 日
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.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Test and Measurement についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!