📄 program_17_02_special.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 + -