www.gusucode.com > MPSK,误码率性能仿真源码程序 > MPSK,误码率性能仿真源码程序/IET_MATLAB/functions/Pb_floor.m

    % computing Error Floor

function Pf=Pb_floor(M,fsr,frd,ch_dis)
% inputs
% M   : constellation size
% fsr,frd : Doppler shifts
% ch_dis: distance between two channel uses

alfa1=besselj(0,2*pi*fsr*ch_dis);
alfa2=besselj(0,2*pi*frd*ch_dis);
alfa=alfa1*alfa2;

if M==2
    % defining a b according to paper by M. Simon, equation 25
    a=0;
    b=sqrt(2);
elseif M==4
    %defining a b according to paper by M. Simon, equation 25
    a=sqrt(2-sqrt(2));
    b=sqrt(2+sqrt(2));
end

% defining beta, alfa(teta), f(teta)
beta=a/b;
q= @ (teta) b^2*(1+2*beta*sin(teta)+beta^2)/log2(M);
g_teta= @(teta) (1-beta^2)/(1+2*beta*sin(teta)+beta^2);  


J2= @ (teta) (1-alfa^2)/(alfa^2*q(teta)+1-alfa^2);
I2= @ (teta) g_teta(teta)*J2(teta);   
L=1;
Pf=int_num(I2,-pi,pi,1000)/(2^(2*L)*pi);

end