zfl_ber.m

来自「BER of Zero forcing Equalizer」· M 代码 · 共 47 行

M
47
字号
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 + =
减小字号Ctrl + -
显示快捷键?