以连续时间信号x(t)=2.5+3sin(400πt)+2cos(140πt)为例。
模拟信号抽样后得到时间离散、幅度连续的抽样信号,对抽样信号非均匀量化编码编出的8位码组用 C1C2C3C4C5C6C7C8表示。抽样周期 Ts设为 0.001 5;采集一个周期,n=0:1:1/Ts,则有 667 个抽样值。
(1)抽样信号是 1×n 的矩阵,13 折线法编码后得到的则是 667×8 的矩阵,一行对应一个抽样值的8位PCM码组。每个抽样值的编码思想都是一样的,若要进行多个抽样值的编码,进行for循环即可。下面阐述单个抽样值的编码思路。
(2)确定极性码 C1:利用matlab的符号函数 sign(x):x<0 时,sign(x)=-1;x=0 时,sign(x)=0;x>0 时,sign(x)=1。所以,若 sign(x)≥0,C1=1;否则 C1=0。(www.xing528.com)
(3)确定段落码 C2C3C4:PCM13折线编码的动态范围为-2048~2048,而上一步骤中已经求出了各抽样信号极性,于是只要对抽样信号的绝对值分析即可。故对抽样值依次进行取模、归一、乘以 2048、取整的操作,可以将抽样值转化为 0~2048 的整数。根据段落码与段落范围的关系,使用if语句即可确定 C2C3C4。
例如:对于+1 000,因为 1 000≥128,故 C2=1;又 1 000≥512,故 C3=1;又 1 000≤1 024,故 C4=0。对于其他取值情况,判断方法与此类似。
(4)确定段内码 C5C6C7C8:每一段落均被均匀地划分为 16 个量化间隔,不过不同段落的量化间隔是不同的。设置两个 1×8 的矩阵,sp=[0,16,32,64,128,256,512,1024]和spmin=[1,1,2,4,8,16,32,64]用于存放每段的起始电平和最小量化间隔。(3)中确定了段落编码,可以确定每段的起始值,再根据待编码值、所在段的起始值、所在段量化间隔的大小即可确定段内码。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。