📄 zfl_ber.m
字号:
function ZFL_BER(b,h,n)
%Zero_forcing linear Equalizer co eq_tap =1000
% b:input
% b=sign(rand(1,5)-.5) %ma hoa BPSK
% h:channel
% d:output
%------------------
eq_tap = length(h);
pulse = zeros(1, eq_tap); pulse(1)=1;
% -----channel-----
%h = pulse; %khong co ISI
%h(1:4) = rand(1,4); %co ISI
%h = h/norm(h);
% --ZFL equalizer--
%fft(h) .* fft(eq) = fft(pulse)
leng= length(b);
eq = ifft(fft(pulse) ./ fft(h));
ho = conv(b, h); % channel output
%n = randn(1, length(ho)); % noise
figure;
SNR=[0:20]; BER=[];
for k = 1:length(SNR)
No = 1/(10^(SNR(k)/10));
n = No.* n;
y = ho+n; % Equalizer input
d = conv(y, eq); % Equalizer output
d = sign(d); % Ma hoa
e1 = abs(b - d(1:leng))/2 ; %error vector
BE1 = sum(e1); %error bits
e2 = abs(b - d(eq_tap +1 : eq_tap +leng))/2 ; %error vector
BE2 = sum(e2); %error bits
BE = min (BE1, BE2);
BER(k) = BE /leng; %bit error rate
n = n ./ No;
end
semilogy(SNR,BER,'bx-');
grid on;
xlabel('SNR = 1/N_o (dB)');
ylabel('BER');
title('BER of Zero-forcing Linnear Equalizer');
return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -