www.gusucode.com > LTE仿真Matlab源码 > LTE_common_compute_BLER.m

    function [bin_BLER bins_begin] = LTE_common_compute_BLER(EESM_vector,ACK_vector,num_bins)
% From a list of SINRs and ACKs, it bins the results and returns back the
% corresponding BLER curve.
% Author: Josep Colom Ikuno, jcolom@nt.tuwien.ac.at
% (c) 2009 by INTHFT
% www.nt.tuwien.ac.at

% Ignore NaNs and Infs
finites_idx = isfinite(EESM_vector);
EESM_vector = EESM_vector(finites_idx);
ACK_vector = ACK_vector(finites_idx);

min_SINR = min(EESM_vector);
max_SINR = max(EESM_vector);
bin_size = (max_SINR-min_SINR)/num_bins;

bins_begin = min_SINR:bin_size:max_SINR-bin_size;
%bin_middles = bins_begin + bin_size/2;
bin_sizes  = zeros(num_bins,1);
bin_BLER   = nan(num_bins,1);

for bin_idx = 1:num_bins
    init_SINR = bins_begin(bin_idx);
    end_SINR  = init_SINR+bin_size;
    
    bin_indexes = (EESM_vector>=init_SINR) & (EESM_vector<end_SINR);
    bin_SINRs   = EESM_vector(bin_indexes);
    bin_ACKs    = ACK_vector(bin_indexes);
    bin_sizes(bin_idx) = length(bin_SINRs);
    if bin_sizes(bin_idx)~=0
        bin_BLER(bin_idx)=1-mean(bin_ACKs);
    end
end