info_dis_get_distribution.m

来自「计算Information Discrepancy中的FDOD函数集」· M 代码 · 共 29 行

M
29
字号
function p=info_dis_get_distribution(s,m,l)
% 对一个已经0-1化的序列计算其分布{p(1), p(2), ..., p(m^l)};
% 输入:
%      s - 已经0-1化的序列, 注意!! 本程序中s必须要求是一个行向量!!;
%      m - symbol的个数;
%      l - 指定的子序列的长度;
%      Sigma - 字符集
% 输出:
%      p - s序列的分布 <1×m^l> double.

% s=[0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1 1];
slength=length(s);

ps=zeros(1,m^l);
for i=1:slength-l+1
    tmp=s(i:i+l-1);
    if m==2
        tmp1=bin2dec(num2str(tmp))+1; %因为matlab数组维数从1开始
    else
        tmp1=0;
        for j=1:l
            tmp1=tmp1+tmp(j)*m^(l-j);
        end
        tmp1=tmp1+1;
    end
    ps(tmp1)=ps(tmp1)+1;
end;
clear tmp tmp1;
p=ps/(slength-l+1);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?