資源簡介
IMA-ADPCM(16bit)語音壓縮的matlab仿真:此代碼可以方便程序員用matlab看一下波形數(shù)據(jù)經過IMA-ADPCM壓縮又解壓縮后,波形有什么變化。

代碼片段和文件信息
function?[?yout?]?=?fun_adpcm(?xin?)
%?adpcm壓縮仿真-壓縮過程
IncludePara;
index?=?0;
prev_sample?=?0;
Len?=?length(xin);
yout?=?zeros(size(xin));
for?i?=?1:Len
????cur_sample=xin(i);????????????????%??得到當前的采樣數(shù)據(jù)
????delta=cur_sample-prev_sample;?????%?計算出和上一個的增量
????
????if?(delta<0)?
????????delta?=?-delta;?
????????sb=8;???
????else
????????sb=0;????????????????????????%?sb?保存的是符號位
????end
????
????code?=fix(?4*delta?/?step_table(index+1));%根據(jù)?steptable[]?得到一個?0~7?的值
?????
????if?(code>7)
????????code=7;???????????????%?它描述了聲音強度的變化量
????end
????yout(i)?=?bitor(codesb);?%?加上符號位保存起來
????
????
????Edelta=?fix((step_table(index+1)*code)/4)?+?fix(step_table(index+1)/8);
????if?(sb==8)?
????????Edelta?=?-Edelta;
????end
????prev_sample?=?prev_sample?+?Edelta;
????
????
????index?=?index?+?index_adjust(code+1);????????%?根據(jù)聲音強度調整下次取?steptable?的序號
????if?(index<0)
????????index=0;?????????????%??便于下次得到更精確的變化量的描述
????else
????????if?(index>88)
????????????index=88;
????????end
????end
????
?
????
?end
end
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????22948??2017-11-08?18:31??adpcm\EXDAT.mat
?????文件?????????603??2017-11-08?16:41??adpcm\IncludePara.m
?????文件????????1061??2017-11-08?16:38??adpcm\fun_Re_adpcm.m
?????文件????????1147??2017-11-08?18:12??adpcm\fun_adpcm.m
?????文件?????????367??2017-11-08?18:46??adpcm\main_adpcm.m
?????目錄???????????0??2017-11-08?18:47??adpcm\
- 上一篇:施密特正交化
- 下一篇:MATLAB高階譜分析信號處理工具箱
評論
共有 條評論