當前位置:編程學習大全網 - 源碼下載 - matlab采集語音信號後進行PCM編碼然後卷積編碼進行差錯控制的以及反演的源代碼!

matlab采集語音信號後進行PCM編碼然後卷積編碼進行差錯控制的以及反演的源代碼!

1.PCM 編碼實現(M函數)

function code=PCMcoding(Range,S)

code=zeros(1,8);

Normalization=abs(S)/Range;

deta=1/2048;

if sign(S)==1

code(1)=1;

else

code(1)=0;

end

detas=ceil(Normalization/deta);

if detas>128

code(2)=1;

if detas>512

code(3)=1;

if detas>1024

code(4)=1;

end

elseif detas>256

code(4)=1;

end

elseif detas>32

code(3)=1;

if detas>64

code(4)=1;

end

elseif detas>16

code(4)=1;

end

Tribal=bin2dec(num2str(code(2:4)))+1;

if Tribal==1

Interval=1;

else Interval=(2^(Tribal+2))/16;

end

if Tribal==1

code(5)=(2^3)*Interval<detas;

code(6)=code(5)*(2^3)*Interval+(2^2)*Interval<detas;

code(7)=code(5)*(2^3)*Interval+code(6)*(2^2)*Interval+(2^1)*Interval<detas;

code(8)=code(5)*(2^3)*Interval+code(6)*(2^2)*Interval+code(7)*(2^1)*Interval+(2^0)*Interval<detas;

else

code(5)=2^(Tribal+2)+(2^3)*Interval<detas;

code(6)=2^(Tribal+2)+code(5)*(2^3)*Interval+(2^2)*Interval<detas;

code(7)=2^(Tribal+2)+code(5)*(2^3)*Interval+code(6)*(2^2)*Interval+(2^1)*Interval<detas;

code(8)=2^(Tribal+2)+code(5)*(2^3)*Interval+code(6)*(2^2)*Interval+code(7)*(2^1)*Interval+(2^0)*Interval<detas;

end

2。PCM 解碼實現(M函數)

%PCM Decoding

function S=PCMdecoding(Range,code)

deta=Range/2048;

Tribal=bin2dec(num2str(code(2:4)))+1;

if Tribal==1

Interval=1;

else Interval=(2^(Tribal+2))/16;

end

if Tribal==1

S=code(5)*(2^3)*Interval+code(6)*(2^2)*Interval+code(7)*(2^1)*Interval+code(8)*(2^0)*Interval+Interval;

else

S=2^(Tribal+2)+code(5)*(2^3)*Interval+code(6)*(2^2)*Interval+code(7)*(2^1)*Interval+code(8)*(2^0)*Interval+Interval;

end

S=S*deta;

  • 上一篇:去壹個十幾個人的小公司做軟件開發好,還是去軟通動力這樣的大公司做測試外包好?
  • 下一篇:怎麽開始讀Linux內核源碼?
  • copyright 2024編程學習大全網