當前位置:首頁 » 編程軟體 » pcm編解碼實驗怎麼做

pcm編解碼實驗怎麼做

發布時間: 2022-09-27 16:12:28

❶ 敘述pcm編解碼的基本步驟 敘述pcm的優缺點 量化有沒有反變換

1敘述PCM編解碼的基本步驟    
采樣——量化——編碼 

2量化有沒有反變換?對通信有何影響?從實驗中看對波形影響有多大?
量化會導致SNR損失,是無法恢復的。實際使用的反變換都是有誤差的。  

3PCM通信中為什麼需要同步?需要哪些同步?實驗中可不可以省去同步過程?     
使PCM通信系統中發、收兩端的定時脈沖在時間上一致起來; 
需要位同步、幀同步; 不可以。  
4對PCM可有什麼改進,舉出改進方式的例子
PCM容易利用采樣中多餘度的編碼方案將使語音信號的碼率降低。 一種簡單的解決方法就是對相鄰樣本之差編碼而不是對樣本本身編碼,由於相鄰樣本之差比實際樣本幅度小,所以表示差信號需要較小的位數。這種普通方法的一種改進方案是用前面的n個樣本根據一定的規律來預測當前的樣本,然後將預測值與實際值的誤差進行量化後傳輸,在根據誤差信號,採用和發送端相同的預測方法恢復出原始信號。

❷ pcm編譯碼系統的頻率響應特性

特性:將頻率不同的正弦信號輸入感測器,相應的輸出信號的幅度和相位與頻率之間的關系稱為頻率響應特性。頻率響應特性可由頻率響應函數表示,它由幅頻特性和相頻特性組成。

本實驗模塊可以傳輸兩路話音信號。採用TP3057編譯器,它包括了圖9-1中的收、發低通濾波器及PCM編解碼器。

編碼器輸入信號可以是本實驗模塊內部產生的正弦信號,也可以是外部信號源的正弦信號或電話信號。本實驗模塊中不含電話機和混合電路,廣義信道是理想的,即將復接器輸出的PCM信號直接送給分接器。

標注方法

放大器在不同的輸出功率下,其頻響是不同的,通常輸出功率越大,其頻響指標就越差。而一個比較負責任的指標標注,應該指「在該放大器的最大不失真功率下測量的指標」,而一些廠家為了迴避大功率輸出下放大器特性的劣化,使得該指標「看起來好看」,往往採用的是「標准測試方式」,也就是說,在給定放大器放大倍數(增益)的條件下進行測試,而這個放大倍數通常是1。

❸ 求編程高手幫忙~寫一段8位二進制折疊碼(PCM編碼器)編解碼程序

#include <stdio.h>
#include <conio.h>

int trans(int n)
{
int r=0;

if(n<0)
{
r=r|0x80;
n=-n;
}
if(n<=16)
{
r=r|0x00;
}
else if(n<=32)
{
r=r|0x10;
}
else if(n<=64)
{
r=r|0x20;
}
else if(n<=128)
{
r=r|0x30;
}
else if(n<=256)
{
r=r|0x40;
}
else if(n<=512)
{
r=r|0x50;
}
else if(n<=1024)
{
r=r|0x60;
}
else if(n<=2046)
{
r=r|0x70;
}
else
{
return 0;
}
r=r|(n&0x0f);
return r;
}

main()
{
int n,r,i;

printf("輸入一個10進制(1-2048):");
scanf("%d",&n);
if(n>=1 && n<=2048)
{
r=trans(n);
printf("8位2進制為:");
for(i=0;i<8;i++)
{
printf("%c",((r>>(8-i-1))&0x01)+'0');
}
printf("\n");
}
else
{
printf("輸入錯誤!\n");
}
}

❹ pcm編碼的編碼過程

模擬信號數字化必須經過三個過程,即抽樣、量化和編碼,以實現話音數字化的脈沖編碼調制技術。

具體介紹:

1、抽樣

抽樣是把模擬信號以其信號帶寬2倍以上的頻率提取樣值,變為在時間軸上離散的抽樣信號的過程。例如,話音信號帶寬被限制在0.3~3.4kHz內,用 8kHz的抽樣頻率(fs),就可獲得能取代原來連續話音信號的抽樣信號。

2、量化

抽樣信號雖然是時間軸上離散的信號,但仍然是模擬信號,其樣值在一定的取值范圍內,可有無限多個值。顯然,對無限個樣值一一給出數字碼組來對應是不可能的。

為了實現以數字碼表示樣值,必須採用「四捨五入」的方法把樣值分級「取整」,使一定取值范圍內的樣值由無限多個值變為有限個值。這一過程稱為量化。

3、編碼

量化後的抽樣信號在一定的取值范圍內僅有有限個可取的樣值,且信號正、負幅度分布的對稱性使正、負樣值的個數相等,正、負向的量化級對稱分布。

若將有限個 量化樣值的絕對值從小到大依次排列,並對應地依次賦予一個十進制數字代碼(例如,賦予樣值0的十進制數字代碼為0),在碼前以「+」、「-」號為前綴,來 區分樣值的正、負,則量化後的抽樣信號就轉化為按抽樣時序排列的一串十進制數字碼流,即十進制數字信號。

簡單高效的數據系統是二進制碼系統,因此,應將十 進制數字代碼變換成二進制編碼。根據十進制數字代碼的總個數,可以確定所需二進制編碼的位數,即字長。這種把量化的抽樣信號變換成給定字長的二進制碼流的過程稱為編碼。

(4)pcm編解碼實驗怎麼做擴展閱讀:

注意:

在計算機應用中,能夠達到最高保真水平的就是PCM編碼,被廣泛用於素材保存及音樂欣賞,CD、DVD以及我們常見的 WAV文件中均有應用。

因此,PCM約定俗成了無損編碼,因為PCM代表了數字音頻中最佳的保真水準,並不意味著PCM就能夠確保信號絕對保真,PCM也只能做到最大程度的無限接近。要算一個PCM音頻流的碼率是一件很輕松的事情,采樣率值×采樣大小值×聲道數 bps。

一個采樣率為44.1KHz,采樣大小為16bit,雙聲道的PCM編碼的WAV文件,它的數據速率則為 44.1K×16×2 =1411.2 Kbps。我們常見的Audio CD就採用了PCM編碼,一張光碟的容量只能容納72分鍾的音樂信息。

❺ pcm 編解碼晶元中的用到哪些濾波器這些濾波器的帶寬設置是如何考慮 的

1. 點到點PCM多路電話通信原理
脈沖編碼調制(PCM)技術與增量調制(ΔM)技術已經在數字通信系統中得到廣泛應用。當信道雜訊比較小時一般用PCM,否則一般用ΔM。目前速率在155MB以下的准同步數字系列(PDH)中,國際上存在A解和μ律兩種PCM編解碼標准系列,在155MB以上的同步數字系列(SDH)中,將這兩個系列統一起來,在同一個等級上兩個系列的碼速率相同。而ΔM在國際上無統一標准,但它在通信環境比較惡劣時顯示了巨大的優越性。
點到點PCM多路電話通信原理可用圖9-1表示。對於基帶通信系統,廣義信道包括傳輸媒質、收濾波器、發濾波器等。對於頻帶系統,廣義信道包括傳輸媒質、調制器、解調器、發濾波器、收濾波器等。
本實驗模塊可以傳輸兩路話音信號。採用TP3057編譯器,它包括了圖9-1中的收、發低通濾波器及PCM編解碼器。編碼器輸入信號可以是本實驗模塊內部產生的正弦信號,也可以是外部信號源的正弦信號或電話信號。本實驗模塊中不含電話機和混合電路,廣義信道是理想的,即將復接器輸出的PCM信號直接送給分接器。
2. PCM編解碼模塊原理
本模塊的原理方框圖圖9-2所示,電原理圖如圖9-3所示(見附錄),模塊內部使用+5V和-5V電壓,其中-5V電壓由-12V電源經7905變換得到。
圖9-2 PCM編解碼原理方框圖
該模塊上有以下測試點和輸入點:
• BS PCM基群時鍾信號(位同步信號)測試點
• SL0 PCM基群第0個時隙同步信號
• SLA 信號A的抽樣信號及時隙同步信號測試點
• SLB 信號B的抽樣信號及時隙同步信號測試點
• SRB 信號B解碼輸出信號測試點
• STA 輸入到編碼器A的信號測試點
• SRA 信號A解碼輸出信號測試點
• STB 輸入到編碼器B的信號測試點
• PCM PCM基群信號測試點
• PCM-A 信號A編碼結果測試點
• PCM-B 信號B編碼結果測試點
• STA-IN 外部音頻信號A輸入點
• STB-IN 外部音頻信號B輸入點
本模塊上有三個開關K5、K6和K8,K5、K6用來選擇兩個編碼器的輸入信號,開關手柄處於左邊(STA-IN、STB-IN)時選擇外部信號、處於右邊(STA-S、STB-S)時選擇模塊內部音頻正弦信號。K8用來選擇SLB信號為時隙同步信號SL1、SL2、SL5、SL7中的某一個。
圖9-2各單元與電路板上元器件之間的對應關系如下:
•晶振 U75:非門74LS04;CRY1:4096KHz晶體
•分頻器1 U78:A:U78:D:觸發器74LS74;U79:計數器74LS193
•分頻器2 U80:計數器74LS193;U78:B:U78:D:觸發器74LS74
•抽樣信號產生器 U81:單穩74LS123;U76:移位寄存器74LS164
•PCM編解碼器A U82:PCM編解碼集成電路TP3057(CD22357)
•PCM編解碼器B U83:PCM編解碼集成電路TP3057(CD22357)
•幀同步信號產生器 U77:8位數據產生器74HC151;U86:A:與門7408
•正弦信號源A U87:運放UA741
•正弦信號源B U88:運放UA741
•復接器 U85:或門74LS32
晶振、分頻器1、分頻器2及抽樣信號(時隙同步信號)產生器構成一個定時器,為兩個PCM編解碼器提供2.048MHz的時鍾信號和8KHz的時隙同步信號。在實際通信系統中,解碼器的時鍾信號(即位同步信號)及時隙同步信號(即幀同步信號)應從接收到的數據流中提取,方法如實驗五及實驗六所述。此處將同步器產生的時鍾信號及時隙同步信號直接送給解碼器。
由於時鍾頻率為2.048MHz,抽樣信號頻率為8KHz,故PCM-A及PCM-B的碼速率都是2.048MB,一幀中有32個時隙,其中1個時隙為PCM編碼數據,另外31個時隙都是空時隙。
PCM信號碼速率也是2.048MB,一幀中的32個時隙中有29個是空時隙,第0時隙為幀同步碼(×1110010)時隙,第2時隙為信號A的時隙,第1(或第5、或第7 —由開關K8控制)時隙為信號B的時隙。
本實驗產生的PCM信號類似於PCM基群信號,但第16個時隙沒有信令信號,第0時隙中的信號與PCM基群的第0時隙的信號也不完全相同。
由於兩個PCM編解碼器用同一個時鍾信號,因而可以對它們進行同步復接(即不需要進行碼速調整)。又由於兩個編碼器輸出數據處於不同時隙,故可對PCM-A和PCM-B進行線或。本模塊中用或門74LS32對PCM-A、PCM-B及幀同步信號進行復接。在解碼之前,不需要對PCM進行分接處理,解碼器的時隙同步信號實際上起到了對信號分路的作用。
3. TP3057簡介
本模塊的核心器件是A律PCM編解碼集成電路TP3057,它是CMOS工藝製造的專用大規模集成電路,片內帶有輸出輸入話路濾波器,其引腳及內部框圖如圖9-4、圖9-5所示。引腳功能如下:
圖9-4 TP3057引腳圖
(1) V一 接-5V電源。
(2) GND 接地。
(3) VFRO 接收部分濾波器模擬信號輸出端。
(4) V+ 接+5V電源。
(5) FSR 接收部分幀同信號輸入端,此信號為8KHz脈沖序列。
(6) DR 接收部分PCM碼流輸入端。
(7) BCLKR/CLKSEL 接收部分位時鍾(同步)信號輸入端,此信號將PCM碼流在FSR上升沿後逐位移入DR端。位時鍾可以為64KHz到2.048MHz的任意頻率,或者輸入邏輯「1」或「0」電平器以選擇1.536MHz、1.544MHz或2.048MHz用作同步模式的主時鍾,此時發時鍾信號BCLKX同時作為發時鍾和收時鍾。
(8) MCLKR/PDN 接收部分主時鍾信號輸入端,此信號頻率必須為1.536MHz、1.544MHz或2.048MHz。可以和MCLKX非同步,但是同步工作時可達到最佳狀態。當此端接低電平時,所有的內部定時信號都選擇MCLKX信號,當此端接高電平時,器件處於省電狀態。
(9) MCLKX 發送部分主時鍾信號輸入端,此信號頻率必須為1.536MHz、1.544MHz或2.048MHz。可以和MCLKR非同步,但是同步工作時可達到最佳狀態。
(10) BCLKX 發送部分位時鍾輸入端,此信號將PCM碼流在FSX信號上升沿後逐位移出DX端,頻率可以為64KHz到2.04MHz的任意頻率,但必須與MCLKX同步。
圖9-5 TP3057內部方框圖
(11) DX 發送部分PCM碼流三態門輸出端。
(12) FSX 發送部分幀同步信號輸入端,此信號為8KHz脈沖序列。
(13) TSX 漏極開路輸出端,在編碼時隙輸出低電平。
(14) GSX 發送部分增益調整信號輸入端。
(15) VFXi- 發送部分放大器反向輸入端。
(16) VFXi+ 發送部分放大器正向輸入端。
TP3057由發送和接收兩部分組成,其功能簡述如下。
發送部分:
包括可調增益放大器、抗混淆濾波器、低通濾波器、高通濾波器、壓縮A/D轉換器。抗混淆濾波器對采樣頻率提供30dB以上的衰減從而避免了任何片外濾波器的加入。低通濾波器是5階的、時鍾頻率為128MHz。高通濾波器是3階的、時鍾頻率為32KHz。高通濾波器的輸出信號送給階梯波產生器(采樣頻率為8KHz)。階梯波產生器、逐次逼近寄存器(S•A•R)、比較器以及符號比特提取單元等4個部分共同組成一個壓縮式A/D轉換器。S•A•R輸出的並行碼經並/串轉換後成PCM信號。參考信號源提供各種精確的基準電壓,允許編碼輸入電壓最大幅度為5VP-P。
發幀同步信號FSX為采樣信號。每個采樣脈沖都使編碼器進行兩項工作:在8比特位同步信號BCLKX的作用下,將采樣值進行8位編碼並存入逐次逼近寄存器;將前一采樣值的編碼結果通過輸出端DX輸出。在8比特位同步信號以後,DX端處於高阻狀態。
接收部分:
包括擴張D/A轉換器和低通濾波器。低通濾波器符合AT&T D3/D4標准和CCITT建議。D/A轉換器由串/並變換、D/A寄存器組成、D/A階梯波形成等部分構成。在收幀同步脈沖FSR上升沿及其之後的8個位同步脈沖BCLKR作用下,8比特PCM數據進入接收數據寄存器(即D/A寄存器),D/A階梯波單元對8比特PCM數據進行D/A變換並保持變換後的信號形成階梯波信號。此信號被送到時鍾頻率為128KHz的開關電容低通濾波器,此低通濾波器對階梯波進行平滑濾波並對孔徑失真(sinx)/x進行補嘗。
在通信工程中,主要用動態范圍和頻率特性來說明PCM編解碼器的性能。
動態范圍的定義是解碼器輸出信噪比大於25dB時允許編碼器輸入信號幅度的變化范圍。PCM編解碼器的動態范圍應大於圖9-6所示的CCITT建議框架(樣板值)。
當編碼器輸入信號幅度超過其動態范圍時,出現過載雜訊,故編碼輸入信號幅度過大時量化信噪比急劇下降。TP3057編解碼系統不過載輸入信號的最大幅度為5VP-P。
由於採用對數壓擴技術,PCM編解碼系統可以改善小信號的量化信噪比,TP3057採用A律13折線對信號進行壓擴。當信號處於某一段落時,量化雜訊不變(因在此段落內對信號進行均勻量化),因此在同一段落內量化信噪比隨信號幅度減小而下降。13折線壓擴特性曲線將正負信號各分為8段,第1段信號最小,第8段信號最大。當信號處於第一、二段時,量化雜訊不隨信號幅度變化,因此當信號太小時,量化信噪比會小於25dB,這就是動態范圍的下限。TP3057編解碼系統動態范圍內的輸入信號最小幅度約為0.025Vp-p。
常用1KHz的正弦信號作為輸入信號來測量PCM編解碼器的動態范圍。
圖9-6 PCM編解碼系統動態范圍樣板值
語音信號的抽樣信號頻率為8KHz,為了不發生頻譜混疊,常將語音信號經截止頻率為3.4KHz的低通濾波器處理後再進行A/D處理。語音信號的最低頻率一般為300Hz。TP3057編碼器的低通濾波器和高通濾波器決定了編解碼系統的頻率特性,當輸入信號頻率超過這兩個濾波器的頻率范圍時,解碼輸出信號幅度迅速下降。這就是PCM編解碼系統頻率特性的含義。
四、實驗步驟
1. 熟悉PCM編解碼單元工作原理,開關K9接通8KHz(置為1000狀態),開關K8置為SL1(或SL5、SL7),開關K5、K6分別置於STA-S、STB-S端,接通實驗箱電源。
2. 用示波器觀察STA、STB,調節電位器R19(對應STA)、R20(對應STB),使正弦信號STA、STB波形不失真(峰峰值小於5V)。
3. 用示波器觀察PCM編碼輸出信號。
示波器CH1接SL0,(調整示波器掃描周期以顯示至少兩個SL0脈沖,從而可以觀察完整的一幀信號)CH2分別接SLA、PCM-A、SLB、PCM-B以及PCM,觀察編碼後的數據所處時隙位置與時隙同步信號的關系以及PCM信號的幀結構(注意:本實驗的幀結構中有29個時隙是空時隙,SL0、SLA及SLB的脈沖寬度等於一個時隙寬度)。
開關K8分別接通SL1、SL2、SL5、SL7,觀察PCM基群幀結構的變化情況。
4. 用示波器觀察PCM解碼輸出信號
示波器的CH1接STA,CH2接SRA,觀察這兩個信號波形是否相同(有相位差)。
5. 用示波器定性觀察PCM編解碼器的動態范圍。
開關K5置於STA-IN端,將低失真低頻信號發生器輸出的1KHz正弦信號從STA-IN輸入到TP3057(U82)編碼器。示波器的CH1接STA(編碼輸入),CH2接SRA(解碼輸出)。將信號幅度分別調至大於5VP-P、等於5VP-P,觀察過載和滿載時的解碼輸出波形。再將信號幅度分別衰減10dB、20dB、30dB、40dB、45dB、50dB,觀察解碼輸出波形(當衰減45dB以上時,解碼輸出信號波形上疊加有較明顯的雜訊)。
也可以用本模塊上的正弦信號源來觀察PCM編解碼系統的過載雜訊(只要將STA-S或STB-S信號幅度調至5VP-P以上即可),但必須用專門的信號源才能較方便地觀察到動態范圍。

❻ 音頻編解碼類型pcm是什麼意思,用什麼軟體可以編輯

PCM是數字語音。播放PCM,編寫代碼,例如,使用QT中的core gui multimedia ,audio的API可以播放,或者編寫C代碼,直接驅動音效卡即可。或者,在PCM上加文件頭,例如.wav(網上有規則),播放.wav文件的播放器很多。最後,去網上找轉換工具,具體的沒有用過,有的網友說可以。

❼ 跪求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;

❽ 語音信號PCM編解碼 MATLAB程序

% clc
% clear all;
% 產生信號
load handel
x=y(1:20000); %取前20000個采樣點
sound(x,Fs);
%PCM編碼
x1=x/0.8.*2048;
yy=pcm_encode(x1);
figure;
subplot(2,1,1);
stem(yy(1:80),'.');
title('PCM編碼後的波形');
%加雜訊
snr=10;
sp=mean(yy.^2);
attn=sp./ 10^(snr/10);
attn = sqrt(attn);
noise=randn(1,length(yy)).*attn;
np=mean(noise.^2);
snr1=10*log10(sp/np);
data=yy+noise;
% data=yy;%不加雜訊
subplot(2,1,2);
stem(data(1:80),'.r');
title('PCM加雜訊後波形');
%解碼
demodata=data>0.5;
zz=pcm_decode(demodata,0.8);
figure;
subplot(2,1,1);
plot(x);
title('原始語音信號');
subplot(2,1,2);
plot(zz);
title('解碼後的語音信號');
sound(zz,Fs);
figure;
plot(x,'b');
hold on
plot(zz,'r');
legend('編解碼前的語音信號','編解碼後的語音信號');
title('編,解碼前後的語音信號');

function y = pcm_encode( x )

y=zeros(length(x),8); %存儲矩陣(全零)
z=sign(x); %判斷x的正負
x=abs(x);%取絕對值

%%段落碼判斷段區間的取值范圍為前開後閉區間
for k=1:length(x)
%符號位的判斷
if z(k)>0
y(k,1)=1;
elseif z(k)<0
y(k,1)=0;
end
if x(k)>128 & x(k)<=2048 %在第五段與第八段之間,段位碼第一位都為「1」
y(k,2)=1;
end
if (x(k)>32 & x(k)<=128) || (x(k)>512 & x(k)<=2048)
y(k,3)=1; %在第三四七八段內,段位碼第二位為「1」
end
if (x(k)>16&x(k)<=32)||(x(k)>64&x(k)<=128)||(x(k)>256&x(k)<=512)||(x(k)>1024&x(k)<=2048)
y(k,4)=1; %在二四六八段內,段位碼第三位為「1」
end
end
%段內碼判斷程序
N=zeros(1,length(x));
for k=1:length(x)
N(k)=y(k,2)*4+y(k,3)*2+y(k,4)+1; %找到x位於第幾段
end

a=[0,16,32,64,128,256,512,1024]; %量化間隔
b=[1,1,2,4,8,16,32,64]; %除以16,得到每段的最小量化間隔

for m=1:length(x)
q=ceil((x(m)-a(N(m)))/b(N(m))); %求出在段內的位置
if q==0
y(m,(5:8))=[0,0,0,0]; %如果輸入為零則輸出「0」
else k=num2str(dec2bin(q-1,4)); %編碼段內碼為二進制
y(m,5)=str2num(k(1));
y(m,6)=str2num(k(2));
y(m,7)=str2num(k(3));
y(m,8)=str2num(k(4));
end
end
%將N行8列矩陣轉換為1行8*N列的矩陣
y=y';
y=reshape(y,1,length(x)*8);
end

function x=pcm_decode(y,max)

%將1行8*N列的矩陣轉換為N行8列矩陣
y=reshape(y,8,length(y)/8);
y=y';
%PCM解碼
n=size(y,1); %求出輸入碼組的個數
a=[0,16,32,64,128,256,512,1024]; %段落起點值
b=[1,1,2,4,8,16,32,64]; %每段的最小量化間隔

for k=1:n
t1=y(k,1); %取符號
t2=y(k,2)*4+y(k,3)*2+y(k,4)+1; %判斷段落位置
t3=y(k,5)*8+y(k,6)*4+y(k,7)*2+y(k,8); %判斷段內位置
if t3==0 %段內碼為零時
m(k)=(a(t2)+1+0.5*b(t2))/2048*max;
else
m(k)=(a(t2)+b(t2)*t3+0.5*b(t2))/2048*max; %還原出量化後的電平值
end
%判斷符號位
if t1==0
x(k)=-m(k);
else
x(k)=m(k);
end
end
end

熱點內容
秦九韶演算法教案 發布:2024-04-26 13:30:22 瀏覽:412
解壓到當前文件夾右鍵 發布:2024-04-26 03:57:08 瀏覽:979
html5android教程視頻下載 發布:2024-04-26 03:09:59 瀏覽:867
伺服器的描述是什麼 發布:2024-04-26 03:08:32 瀏覽:394
個人加密 發布:2024-04-26 03:01:23 瀏覽:521
linuxusbgadget 發布:2024-04-26 02:52:54 瀏覽:304
我的世界空島世界伺服器地址 發布:2024-04-26 01:39:08 瀏覽:248
尼爾機械紀元加密 發布:2024-04-26 01:37:11 瀏覽:868
在控制台輸出sql語句 發布:2024-04-26 01:08:12 瀏覽:432
動畫java 發布:2024-04-26 01:02:40 瀏覽:12