Simulink中DPCM量化和编码仿真
DPCM編碼與解碼的介紹
DPCM是差分脈沖編碼調(diào)制的簡稱,是一種利用信號樣值之間的關(guān)聯(lián)特性進(jìn)行高效率波形編碼的方法。當(dāng)信號樣值序列中鄰近樣值之間存在明顯的關(guān)聯(lián)時,那么樣值的差值方差就會比樣值本身的方差要小。PCM中直接傳輸樣值本身,而在DPCM中,傳輸數(shù)據(jù)為樣值的差值,在量化誤差不變的條件下,就可以用較少的比特數(shù)來表示碼字,也就提高了波形編碼效率。DPCM編碼與解碼的仿真在Simulink中的仿真模型如圖
該系統(tǒng)的信號發(fā)生器產(chǎn)生一個幅度為1,頻率為1的正弦波,獲得輸出圖像Scope1,其表達(dá)式為x=sin?(2πft)x=\sin (2\pi ft) x=sin(2πft),通過DPCM編碼器,獲得輸出圖像Scope2,再通過DPCM解碼器解碼,獲得輸出圖像Scope3。通過Scope1與Scope3圖像的對比來驗證解碼后的信號是否和原信號相同。并且在MATLAB中通過代碼來驗證其正確性。
Simulink仿真設(shè)置
在仿真中,我們對DPCM encoder(差分脈沖編碼表調(diào)制編碼器)的主要參數(shù)做如下設(shè)置:
- predictor numerator(預(yù)測分子)設(shè)置為[0.9999]
- predictor denominator(預(yù)測分母)設(shè)置為[1]
- quantization partition(量子化分區(qū))設(shè)置為[-0.0848 -0.029 0.0298 0.0853]
- quantization codebook(量化碼本)設(shè)置為[-0.06 0.0004 0.058]
- sample time(采樣時間)設(shè)置為0.01
設(shè)置結(jié)果如圖
我們對DPCM Decoder(差分脈沖編碼表調(diào)制解碼器)的主要參數(shù)做如下設(shè)置: - predictor numerator(預(yù)測分子)設(shè)置為[0.9999]
- predictor denominator(預(yù)測分母)設(shè)置為[1]
- quantization codebook(量化碼本)設(shè)置為[-0.085 -0.03 0.03 0.085]
- sample time(采樣時間)設(shè)置為0.01
設(shè)置結(jié)果如圖
仿真結(jié)果
我們對設(shè)置好參數(shù)的仿真圖進(jìn)行仿真,系統(tǒng)在信號發(fā)生器產(chǎn)生一段正弦波后,將正弦波送入DPCM編碼器中,再通過DPCM解碼器,得到輸出信號。其中Scope1中的圖像是信號發(fā)生器產(chǎn)生的原正弦波。Scope2中的圖像是原正弦波經(jīng)過DPCM編碼器編碼后的信號2。Scope3中的圖像是信號2經(jīng)過DPCM解碼器解碼后恢復(fù)的信號。
從仿真結(jié)果可以看出,從信號發(fā)生器產(chǎn)生的正弦波在經(jīng)過DPCM的編碼與解碼后,能夠準(zhǔn)確的還原出原信號。
在MATLAB中對比驗證仿真結(jié)果
代碼如下:
clf; clear all; Ts = 0.001; t = 0:Ts:10; x = sin(2*pi*1*t); delta = 0.4; D(1+length(t)) = 0; for k = 1:length(t)e(k) = x(k) - D(k);e_q(k) = delta * (2*(e(k) >= 0)-1);D(k+1) = e_q(k) + D(k);codeout(k) = (e_q(k) > 0); end %原信號 subplot(3,1,1); plot(t,x); axis([0 10 -2 2]); title('原信號'); ylabel('幅度'); xlabel('時間/s'); hold on; %編碼 subplot(3,1,2); stairs(t,codeout); axis([0 20*Ts -2 2]); title('編碼輸出結(jié)果'); ylabel('幅度'); xlabel('時間/s'); %解碼 Dr(1+length(t)) = 0; for k = 1:length(t)eq(k) = delta * (2*codeout(k) - 1);xr(k) = eq(k) + Dr(k);Dr(k+1) = xr(k); end subplot(3,1,3); stairs(t,xr); hold on; subplot(3,1,3); plot(t,x); title('解碼結(jié)果和原信號波形對比'); ylabel('幅度'); xlabel('時間/s');輸出結(jié)果如圖
從MATLAB中的圖像結(jié)果可以看出,原信號經(jīng)過DCMP編碼再解碼之后能夠還原出原信號,與Simulink仿真的結(jié)果一致。
總結(jié)
以上是生活随笔為你收集整理的Simulink中DPCM量化和编码仿真的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何重启_消费市场按下重启键,企业该如何
- 下一篇: 新版Elemen Plus 国际化 1.