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

📄 program_17_02_special.m

📁 小波分析理论与MATLABR2007实现一书的原代码
💻 M
字号:
function program();
%装载语音信号
clear all;
clc;
N=1024*60;
[s,fs,bits]=wavread('C:\TDDOWNLOAD\小波分析理论与MATALB R2007 实现\chapter17_S\sound.wav',N);
sound(s,fs)
figure(1);
plot(1:N,s,'LineWidth',2);
xlabel('时间 n');
ylabel('幅值 A');

%选用小波函数
wavelet='db5';
%分解级数
level=5;
%压缩参数
alpha=1.5;
%阈值类型
sorh='h';
%小波分解
[c,l]=wavedec(s,level,wavelet);
%计算阈值
[thr,nkeep]=wdcbm(c,l,alpha);
%使用硬阈值压缩信号
[xc,cxc,lxc,perf0,perfl2]=wdencmp('lvd',c,l,wavelet,level,thr,sorh);
%对系数编码
cC=encode(cxc);%调用编码函数
%传输的系数
tC=cC;
%传输的系数向量长度
tL=length(tC)
%零系数的百分比
pzeros=perf0
%保留的能量大小
pnormen=perfl2
%编码的压缩比
compratio=length(s)/length(tC)


function cC=encode(C);
%初始变量
zeroseq=0;
zerocount=0;
j=1;
compC=[];

for m=1:length(C)
    if (C(m)==0)&(zeroseq==0)
        compC=[compC C(m)];
        j=j+1;
        zeroseq=1;
        zerocount=1;
        if m==length(C)
            compC=[compC zerocount];
        end
    elseif (C(m)==0)&(zeroseq==1)
        zerocount=zerocount+1;
        if m==length(C)
            compC=[compC zerocount];
        end
    elseif (C(m)~=0)&(zeroseq==1)
        compC=[compC zerocount C(m)];
        j=j+2;
        zeroseq=0;
        zerocount=0;
    else
        compC=[compC C(m)];
        j=j+1;
    end
end
cC=compC;   




⌨️ 快捷键说明

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