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 + -
显示快捷键?