⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fracnum2bin.asv

📁 实现SPIHT算法!!!!使用MATLAB 实现程序
💻 ASV
字号:
function [binlist,qLpoint]=fracnum2bin(num,qLevel)
% 函数 FRACNUM2BIN() 根据精细扫描对应的权位 N ,将任意的十进制正数转换为二进制数,
% 包括带有任意位小数的十进制数。Matlab中的函数 dec2bin()、dec2binvec()只能将十
% 进制数的整数部分转换为二进制表示,对小数部分则不转换。
%
% 输入参数:num —— 非负的十进制数
%          qLevel —— 量化转换精度,也可以是精细扫描对应的权位 N
% 输出参数:biLSP —— 二进制表示列表
%          Np —— 权位N与最高权位的距离,N 也是本级编码阈值的指数

intBin=dec2binvec(num);
% 首先用Matlab函数dec2binvec()获取整数部分的二进制表示intBin,低位在前,高位在后
intBin=intBin(end:-1:1);
% 根据个人习惯,将二进制表示转换为高位在前,低位在后
lenIB=length(intBin);
% 求出二进制表示的长度
decpart=num-floor(num);
% 求出小数部分
decBin=[];
% 小数部分的二进制表示初始化为空表

% 根据量化精度要求输出总的二进制表示列表
if (qLevel+1)>lenIB
% 如果量化精度高于整数部分的二进制码长,则输出为零值列表
    binlist=zeros(1,qLevel+1);
    qLpoint=1;
elseif qLevel>=0
% 如果量化精度在整数范围,则输出整数部分的二进制表示intBin
% 不需转换小数部分,同时输出量化精度与最高权位的距离Np
    binlist=intBin;
    qLpoint=lenIB-qLevel;
elseif qLevel<0
% 如果量化精度在整数范围,则输出整数部分的二进制表示intBin
% 不需转换小数部分,同时输出量化精度与最高权位的距离Np
    N=-1;
    while N>=qLevel
        res=decpart-2^N;
        if res==0
            decBin=[decBin,1];
            decBin(end+1:-qLevel)=0;
            break;
        elseif res>0
            decBin=[decBin,1];
            decpart=res;
            N=N-1;
        else
            decBin=[decBin,0];
            N=N-1;
        end
    end
    binlist=[intBin,decBin];
    qLpoint=lenIB-qLevel;
end
    

⌨️ 快捷键说明

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