一、实验原理
PCM,Pulse Code Modulation(脉冲编码调制),即把从模拟信号抽样、量化、编码成为二迚制符号的基本过程, 称为脉冲编码调制。
模拟信号的数字化过程:
1、抽样 – 时间离散:时间连续的信号 -> 时间离散、幅度连续的信号;
• 抽样定理(香农采样定律、奈奎斯特采样定律):设时间连续信号f(t),其最高截止频率为fm, 如果用时间间隔为𝑇 ≤ 1 2𝑓𝑚 的开关信号对f(t)迚行抽样时,则f(t)就可被样值信号唯一地表示。
• 这样可以只传输这些离散的抽样值,接收端就能恢复原模拟信号。
• 例:典型电话信号的最高频率通常限制在3400Hz,而抽样频率通常采用8000Hz。
模拟信号抽样及频谱:
2、量化与编码
•量化:一个连续幅度值的无限数集合 -> 一个 离散幅度值的有限数集合。
• 编码:将量化后的信号编码形成一个二迚制 码组输出。国际标准化的PCM码组是用八位 码组代表一个抽样值。
• 均匀量化:量化间隔保持不变。
• 非均匀量化:根据信号的不同区间来确定量 化间隔 • 非均匀量化优势:当输入信号具有非均匀分 布;改善了小信号时的信噪比。
二、A律13折线法
• 1位:极性正负
• 2-4位:段落码,非均匀量化
• 5-8位:段内码,均匀量化
三、pcm编码与解码
题目:对于给定的语音文件进行a律13折线编码,观察原音频信号波形、抽样后音频信号波形、编码后的数据、解码后的数据。
(1)读取语音文件进行抽样量化
%%读取本地wav文件 filePath='Windows XP 关机.wav'; [y,Fs]=audioread(filePath); y=y'; %转置 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数据');
(3)13折线具体编码
在这里我们采用以下引用方式;
function [sampleData,a13_moddata] = PCM_13Encode(inputData,Fs,sampleVal) [ a13_moddata ] = a_13coding( sampleData );
a13_moddata 函数:
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||Is0 C(1)=1 ; %判断抽样值的正负 end % the polarity determins C(1) abIs=abs(Is); if 0a+(k-1)*q && Is