国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【通信原理實驗】基于A律13折線的PCM編碼與解碼(附完整代碼)

這篇具有很好參考價值的文章主要介紹了【通信原理實驗】基于A律13折線的PCM編碼與解碼(附完整代碼)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、實驗原理

PCM,Pulse Code Modulation(脈沖編碼調(diào)制),即把從模擬信號抽樣、量化、編碼成為二迚制符號的基本過程, 稱為脈沖編碼調(diào)制。

模擬信號的數(shù)字化過程:

【通信原理實驗】基于A律13折線的PCM編碼與解碼(附完整代碼)

1、抽樣 – 時間離散:時間連續(xù)的信號 -> 時間離散、幅度連續(xù)的信號;

? 抽樣定理(香農(nóng)采樣定律、奈奎斯特采樣定律):設(shè)時間連續(xù)信號f(t),其最高截止頻率為fm, 如果用時間間隔為?? ≤ 1 2???? 的開關(guān)信號對f(t)迚行抽樣時,則f(t)就可被樣值信號唯一地表示。

? 這樣可以只傳輸這些離散的抽樣值,接收端就能恢復(fù)原模擬信號。

? 例:典型電話信號的最高頻率通常限制在3400Hz,而抽樣頻率通常采用8000Hz。

模擬信號抽樣及頻譜:

【通信原理實驗】基于A律13折線的PCM編碼與解碼(附完整代碼)

2、量化與編碼

?量化:一個連續(xù)幅度值的無限數(shù)集合 -> 一個 離散幅度值的有限數(shù)集合。

? 編碼:將量化后的信號編碼形成一個二迚制 碼組輸出。國際標(biāo)準(zhǔn)化的PCM碼組是用八位 碼組代表一個抽樣值。

? 均勻量化:量化間隔保持不變。

? 非均勻量化:根據(jù)信號的不同區(qū)間來確定量 化間隔 ? 非均勻量化優(yōu)勢:當(dāng)輸入信號具有非均勻分 布;改善了小信號時的信噪比。

二、A律13折線法

? 1位:極性正負(fù)

? 2-4位:段落碼,非均勻量化

? 5-8位:段內(nèi)碼,均勻量化

【通信原理實驗】基于A律13折線的PCM編碼與解碼(附完整代碼)


三、pcm編碼與解碼

題目:對于給定的語音文件進行a律13折線編碼,觀察原音頻信號波形、抽樣后音頻信號波形、編碼后的數(shù)據(jù)、解碼后的數(shù)據(jù)。

(1)讀取語音文件進行抽樣量化

%%讀取本地wav文件
filePath='Windows XP 關(guān)機.wav';
[y,Fs]=audioread(filePath);
y=y';           %轉(zhuǎn)置
yCh1=y(1,:);    %取一個聲道

figure
dt=1/Fs;
t=0:dt:(length(yCh1)-1)*dt;
plot(t,yCh1);
title('wav音頻信號波形');

?(2)a律13折線編碼

sampleVal=8000;%8k抽樣率
[sampleData,a13_moddata]=PCM_13Encode(yCh1,Fs,sampleVal);

save('encode_data01.mat','a13_moddata');

figure
dt1=1/sampleVal;
t1=0:dt1:(length(sampleData)-1)*dt1;
plot(t1,sampleData);
title('wav音頻信號抽樣后的波形');

figure
plot(a13_moddata);
title('編碼后的bit數(shù)據(jù)');

(3)13折線具體編碼

在這里我們采用以下引用方式;

function [sampleData,a13_moddata] = PCM_13Encode(inputData,Fs,sampleVal)
[ a13_moddata ] = a_13coding( sampleData );

?a13_moddata 函數(shù):

function  [ a13_moddata ] = a_13coding( x )
n=length(x);
a13_moddata=zeros(1,n*8);
for bb=1:n
    Is=x(1,bb);
    if Is>1||Is<-1,error('input must within [-1,1]'),end
    Is=round(Is*2048);
    C=zeros(1,8);  %將8位PCM編碼初始化為全0
    if Is>0
        C(1)=1 ;  %判斷抽樣值的正負(fù)
    end
    
    % the polarity determins C(1)
    abIs=abs(Is);
    
    if 0<abIs && abIs<=16
        C(2:4)=[0 0 0];    %8級量化編碼
        q=1;
        a=0;
        C(5:8)=e_coding(abIs,q,a); %16級量化編碼
    end
     if 16<abIs && abIs<=32
        C(2:4)=[0 0 1];
        q=1;
        a=16;
        C(5:8)=e_coding(abIs,q,a);
    end
    if 32<abIs && abIs<=64
        C(2:4)=[0 1 0];
        q=2;
        a=32;
        C(5:8)=e_coding(abIs,q,a);
    end
    if 64<abIs && abIs<=128
        C(2:4)=[0 1 1];
        q=4;
        a=64;
        C(5:8)=e_coding(abIs,q,a);
    end
    if 128<abIs && abIs<=256
        C(2:4)=[1 0 0];
        q=8;
        a=128;
        C(5:8)=e_coding(abIs,q,a);
    end
    if 256<abIs && abIs<=512
        C(2:4)=[1 0 1];
        q=16;
        a=256;
        C(5:8)=e_coding(abIs,q,a);
    end
    if 512<abIs && abIs<=1024
        C(2:4)=[1 1 0];
        q=32;
        a=512;
        C(5:8)=e_coding(abIs,q,a);
    end
    if 1024<abIs && abIs<=2048
        C(2:4)=[1 1 1];
        q=64;
        a=1024;
        C(5:8)=e_coding(abIs,q,a);
    end
   
      a13_moddata(1,(bb-1)*8+1:bb*8)=C;  %得到8位pcm編碼
    end
end

%16級量化編碼函數(shù)
function [ four ]=e_coding(Is,q,a)
four=zeros(1,4);
for k=1:16
    if Is>a+(k-1)*q && Is<=a+k*q
        four=dec2bin(k-1,4);
        four=str2num(four(:))';
    else
    end
end

end

(4)pcm解碼

clc
clear
sampleVal=8000; 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%讀取編碼數(shù)據(jù) mat文件
data =load('a02.mat') ;  %讀取mat 文件
a13_moddata=data.a13_moddata;       %獲取mat文件a13_moddata的數(shù)據(jù)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%PCM 13折線解碼 
[outData] = PCM_13Decode( a13_moddata );

figure
dt1=1/sampleVal;
t1=0:dt1:(length(outData)-1)*dt1;
plot(t1,outData);
title('解碼還原后的語音波形');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%將語音數(shù)據(jù)寫入音頻WAV文件
writeData=[outData;outData]';%復(fù)制聲道1數(shù)據(jù)到聲道2,并轉(zhuǎn)置
writeFilePath='decode_data02.wav';
audiowrite(writeFilePath,writeData,sampleVal); 

(5)解碼函數(shù)

解碼引用PCM_13Decode函數(shù),其中具體代碼為:

function  [outData] = PCM_13Decode( inputData )

n=length(inputData);
outData=zeros(1,n/8);
MM=zeros(1,8);

for kk=1:n/8
    MM(1:8)=inputData(1,(kk-1)*8+1:kk*8); %取得8位PCM碼
    
    temp=MM(2)*2^2+MM(3)*2+MM(4)     ; %將8位PCM碼的第2~4位二進制數(shù)轉(zhuǎn)化為10進制(三位二進制轉(zhuǎn)十進制)
                %用于判斷抽樣值在哪個段落內(nèi)

%     段落序號i=1                
    if temp==0
        q=1;    %段內(nèi)量化間隔
        a=0;    %段落起始電平
    end
%     段落序號i=2   
    if temp==1
        q=1;
        a=16;
    end
%     段落序號i=3    
    if temp==2
        q=2;
        a=32;
    end
%     段落序號i=4    
    if temp==3
        q=4;
        a=64;
    end
%     段落序號i=5    
    if temp==4
        q=8;
        a=128;
    end
%     段落序號i=6    
    if temp==5
        q=16;
        a=256;
    end
%     段落序號i=7    
    if temp==6
        q=32;
        a=512;
    end
%     段落序號i=8    
    if temp==7
        q=64;
        a=1024;
    end
   
   A= MM(5)*2^3+MM(6)*2^2+MM(7)*2+MM(8)  ;%8位PCM碼的第5~8位二進制數(shù)轉(zhuǎn)化為10進制
                                          %用于判斷抽樣值量化級數(shù)
                                     
    R=(a+A*q+q/2)/2048;%取量化間隔中點值進行譯碼
    if  MM(1)==0  %判斷極性
        R=-R;
    end
    outData(1,kk)=R;%譯碼后數(shù)據(jù)
end
end

【通信原理實驗】基于A律13折線的PCM編碼與解碼(附完整代碼)

?以上就是pcm基于A律13折線的編碼與解碼的全部模塊了,放到一起就可以運行了,記得把文件名改成自己的,然后放到同一目錄中。文章來源地址http://www.zghlxwxcb.cn/news/detail-473292.html

到了這里,關(guān)于【通信原理實驗】基于A律13折線的PCM編碼與解碼(附完整代碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 計算機組成原理--基于Logisim的海明校驗碼編碼電路實驗的應(yīng)用(超詳細/設(shè)計/實驗/作業(yè)/練習(xí))

    計算機組成原理--基于Logisim的海明校驗碼編碼電路實驗的應(yīng)用(超詳細/設(shè)計/實驗/作業(yè)/練習(xí))

    掌握海明碼設(shè)計原理,能獨立設(shè)計實現(xiàn)漢字 GB2312 編碼的海明校驗編碼體系,并最終在實驗環(huán)境中利用硬件電路實現(xiàn)對應(yīng)的編碼電路。 1.軟件:Logisim軟件、JAVA環(huán)境 2.硬件:計算機Windows 10 在 logisim 中打開實驗資料包中的 data.circ 文件,在對應(yīng)電路中完成海明校驗編碼電路。輸

    2024年02月08日
    瀏覽(352)
  • 辨析Java與網(wǎng)絡(luò)通信中的編碼與解碼

    編碼(在Java字符流中) :當(dāng)我們將字符數(shù)據(jù)寫入字符流時,Java會根據(jù)我們指定的字符集(如UTF-8、ISO-8859-1等)將字符轉(zhuǎn)換為相應(yīng)的字節(jié)序列。這個過程就是編碼。Java的 Writer 類及其子類負(fù)責(zé)執(zhí)行這個編碼過程。 解碼(在Java字符流中) :當(dāng)我們從字符流中讀取字符數(shù)據(jù)時,

    2024年03月10日
    瀏覽(18)
  • Base16的編碼和解碼原理及代碼

    Base16的編碼和解碼原理及代碼

    1、將二進制的數(shù)據(jù)轉(zhuǎn)換為十六進制(0x)來進行顯示。 2、原二進制一個字節(jié)為8個比特,而一位十六進制字符代表的是四位二進制,所以原二進制的一個字節(jié)轉(zhuǎn)換成了兩個十六進制的字符,兩個字符就是兩個字節(jié)。是原來大小的兩倍 1、準(zhǔn)備 首先看ASCII字符代碼表,確定我們

    2024年02月16日
    瀏覽(23)
  • 從原理到實踐:音視頻編碼與解碼技術(shù)解析

    從原理到實踐:音視頻編碼與解碼技術(shù)解析

    1.1 引言 音視頻編碼與解碼技術(shù)在現(xiàn)代數(shù)字媒體領(lǐng)域中扮演著至關(guān)重要的角色。隨著互聯(lián)網(wǎng)和移動設(shè)備的快速發(fā)展,音視頻數(shù)據(jù)的傳輸和處理變得越來越普遍和重要。理解音視頻編碼與解碼的原理與實踐對于開發(fā)高質(zhì)量、高效率的音視頻應(yīng)用程序至關(guān)重要。 1.2 音視頻編碼與解

    2024年02月03日
    瀏覽(22)
  • 解碼器 | 基于 Transformers 的編碼器-解碼器模型

    基于 transformer 的編碼器-解碼器模型是 表征學(xué)習(xí) 和 模型架構(gòu) 這兩個領(lǐng)域多年研究成果的結(jié)晶。本文簡要介紹了神經(jīng)編碼器-解碼器模型的歷史,更多背景知識,建議讀者閱讀由 Sebastion Ruder 撰寫的這篇精彩 博文。此外,建議讀者對 自注意力 (self-attention) 架構(gòu) 有一個基本了解

    2024年02月08日
    瀏覽(25)
  • 編碼器 | 基于 Transformers 的編碼器-解碼器模型

    基于 transformer 的編碼器-解碼器模型是 表征學(xué)習(xí) 和 模型架構(gòu) 這兩個領(lǐng)域多年研究成果的結(jié)晶。本文簡要介紹了神經(jīng)編碼器-解碼器模型的歷史,更多背景知識,建議讀者閱讀由 Sebastion Ruder 撰寫的這篇精彩 博文。此外,建議讀者對 自注意力 (self-attention) 架構(gòu) 有一個基本了解

    2024年02月08日
    瀏覽(29)
  • 圖片的編碼存儲與解碼輸出(基于Android將圖片轉(zhuǎn)Base64編碼后再次解碼會導(dǎo)致圖片失真的解決辦法)

    圖片的編碼存儲與解碼輸出(基于Android將圖片轉(zhuǎn)Base64編碼后再次解碼會導(dǎo)致圖片失真的解決辦法)

    鏈接:https://pan.baidu.com/s/1hvVupGcCf1f41fizF08SNg?pwd=9988? 提取碼:9988 部分源碼: 轉(zhuǎn)Base64編碼部分: 以上Android程序運行后會將圖片的轉(zhuǎn)為Base64編碼進行存儲,以下是圖片轉(zhuǎn)碼后的結(jié)果。 下面是進行驗證的php代碼: 但是解碼后輸出后的照片出現(xiàn)了嚴(yán)重失真 數(shù)據(jù)量增加:Base64 編碼

    2024年01月18日
    瀏覽(23)
  • 通信原理板塊——線性分組碼之監(jiān)督矩陣、生成矩陣、編解碼計算

    通信原理板塊——線性分組碼之監(jiān)督矩陣、生成矩陣、編解碼計算

    微信公眾號上線,搜索公眾號***小灰灰的FPGA***,關(guān)注可獲取相關(guān)源碼,定期更新有關(guān)FPGA的項目以及開源項目源碼,包括但不限于各類檢測芯片驅(qū)動、低速接口驅(qū)動、高速接口驅(qū)動、數(shù)據(jù)信號處理、圖像處理以及AXI總線等 線性分組碼之監(jiān)督矩陣、生成矩陣、編解碼計算 以(n,k

    2024年02月04日
    瀏覽(17)
  • 通過libfdk_aac編解碼器實現(xiàn)AAC音頻和PCM的編解碼

    了解如何使用libfdk_aac編解碼器在Windows環(huán)境下實現(xiàn)AAC音頻和PCM的編解碼,通過FFmpeg進行操作,提高音頻質(zhì)量和壓縮效率。

    2024年02月04日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包