function [res,stepScale]=buildPDensity2(arg,argMin,argMax,step)
% [res,stepScale]=buildPDensity(arg,steps)
% Строит распределение встречающихся в квадратной матрице элементов
% Аргументы  : arg    - матрица, распределение элементов которой строится
%              argMin - начало отрезка для построения распределения
%              argMax - конец отрезка для построения распределения
%              step   - длина одного отрезка
% Результаты : res - полученный вектор
%              stepScale - вектор отрезков, по которым происходило разбиение

[m,n]=size(arg);             % определяем размер исходной матрицы
% находим количество шагов
steps=(argMax-argMin)/step+1;
array(1,1:steps)=0;          % создаем пустой массив для записи результата
% вычисления
for i=1:m
    for j=1:n
        if i~=j
            index=floor((arg(i,j)-argMin)/step)+1;
            if index>steps
                index=steps;
            end
            array(1,index)=array(1,index)+1;
        end
    end
end
% записываем окончательный результат
res=array./(m*n-n)/step;
stepScale(1,1:steps)=0;
for i=1:steps
    stepScale(1,i)=argMin+i*step-step/2;  % !!!
end