f1.m

来自「信源编码中的fano编码的MATALB程序实现」· M 代码 · 共 34 行

M
34
字号
%函数f1存放于f1.m
function x=f1(i,j,p,r)
global x;
x=char(x);
if(j<=i)
   return;
else
    q=0;
for t=i:j  %对于区间[i,j]自上而下求累加概率值
    q=p(t)+q;y(t)=q; 
end
for t=i:j%把所有自上而下的累加概率值与该区间总概率值减该累加概率值之差取绝对值存在一数组
 v(t)=abs(y(t)-(q-y(t))); 
end
for t=i:j
    if(v(t)==min(v))  %求该数组中最小的一个值来确定分界点位置
   for k=i:t    %赋值码字
        x(k,r)='0';
    end
    for k=(t+1):j
        x(k,r)='1';
    end
    d=t;
    f1(i,d,p,r+1); %递归调用及相互调用
    f2(d+1,j,p,r+1);
    f1(d+1,j,p,r+1);
    f2(i,d,p,r+1);
    else
    end
end 
end
return;

⌨️ 快捷键说明

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