Simulink中DPCM量化和编码仿真
DPCM編碼與解碼的介紹
DPCM是差分脈沖編碼調制的簡稱,是一種利用信號樣值之間的關聯特性進行高效率波形編碼的方法。當信號樣值序列中鄰近樣值之間存在明顯的關聯時,那么樣值的差值方差就會比樣值本身的方差要小。PCM中直接傳輸樣值本身,而在DPCM中,傳輸數據為樣值的差值,在量化誤差不變的條件下,就可以用較少的比特數來表示碼字,也就提高了波形編碼效率。DPCM編碼與解碼的仿真在Simulink中的仿真模型如圖
該系統的信號發生器產生一個幅度為1,頻率為1的正弦波,獲得輸出圖像Scope1,其表達式為x=sin?(2πft)x=\sin (2\pi ft) x=sin(2πft),通過DPCM編碼器,獲得輸出圖像Scope2,再通過DPCM解碼器解碼,獲得輸出圖像Scope3。通過Scope1與Scope3圖像的對比來驗證解碼后的信號是否和原信號相同。并且在MATLAB中通過代碼來驗證其正確性。
Simulink仿真設置
在仿真中,我們對DPCM encoder(差分脈沖編碼表調制編碼器)的主要參數做如下設置:
- predictor numerator(預測分子)設置為[0.9999]
- predictor denominator(預測分母)設置為[1]
- quantization partition(量子化分區)設置為[-0.0848 -0.029 0.0298 0.0853]
- quantization codebook(量化碼本)設置為[-0.06 0.0004 0.058]
- sample time(采樣時間)設置為0.01
設置結果如圖
我們對DPCM Decoder(差分脈沖編碼表調制解碼器)的主要參數做如下設置: - predictor numerator(預測分子)設置為[0.9999]
- predictor denominator(預測分母)設置為[1]
- quantization codebook(量化碼本)設置為[-0.085 -0.03 0.03 0.085]
- sample time(采樣時間)設置為0.01
設置結果如圖
仿真結果
我們對設置好參數的仿真圖進行仿真,系統在信號發生器產生一段正弦波后,將正弦波送入DPCM編碼器中,再通過DPCM解碼器,得到輸出信號。其中Scope1中的圖像是信號發生器產生的原正弦波。Scope2中的圖像是原正弦波經過DPCM編碼器編碼后的信號2。Scope3中的圖像是信號2經過DPCM解碼器解碼后恢復的信號。
從仿真結果可以看出,從信號發生器產生的正弦波在經過DPCM的編碼與解碼后,能夠準確的還原出原信號。
在MATLAB中對比驗證仿真結果
代碼如下:
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('編碼輸出結果'); 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('解碼結果和原信號波形對比'); ylabel('幅度'); xlabel('時間/s');輸出結果如圖
從MATLAB中的圖像結果可以看出,原信號經過DCMP編碼再解碼之后能夠還原出原信號,與Simulink仿真的結果一致。
總結
以上是生活随笔為你收集整理的Simulink中DPCM量化和编码仿真的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何重启_消费市场按下重启键,企业该如何
- 下一篇: 新版Elemen Plus 国际化 1.