A律13折线码编码输出、量化误差、以及对应的11位均匀量化编码
来源:互联网 发布:js面向对象编程oop 编辑:程序博客网 时间:2024/05/18 00:38
最近帮别人做了些通信原理的题目,发现里面都会涉及到A律13折线码编码的问题,为了以后碰到类似的问题方便计算,写了这个小程序,返回内容包括整个的解题思路,过程以及结果。
首先看个例子:
function [coded_output,quantization_error,Uniform_quantization]=A13(Sampling_pulse_val)%输入:抽样脉冲值%输出:coded_output:A律13折线码编码输出;% quantization_error:量化误差;% Uniform_quantization:对应于7位码(不包含极性码)的均匀量化11位码%dec2bin()可以将十进制转换为二进制if abs(Sampling_pulse_val)>=2048 error('抽样脉冲值应在0到2047之间')endcoded_output=zeros(1,8);%定义一个1*8的矩阵,每一个元素表示量化输出的一位,分别为C0C1……C7%C0表示极性码,C1C2C3表示段落码,C4C5C6C7表示段内码disp('____________________________________________')if Sampling_pulse_val>0 disp('因为抽样脉冲值大于零,所以极性码为1') coded_output(1)=1;%如果抽样脉冲值为正,则极性码为1else disp('因为抽样脉冲值小于零,所以极性码为0') coded_output(1)=0;%否则,极性码为0endSampling_pulse_val=abs(Sampling_pulse_val);%根据抽样脉冲值确定段落码%第一段if Sampling_pulse_val>=0 && Sampling_pulse_val<16 start=0;%该段的起始电平 step=1;%该段的量化间隔 coded_output(2:4)=[0 0 0];%该段的段落码 disp('因为抽样脉冲值在[0,16)之间,所以段落码为000') %第二段else if Sampling_pulse_val>=16 && Sampling_pulse_val<32 start=16;%该段的起始电平 step=1;%该段的量化间隔 coded_output(2:4)=[0 0 1];%该段的段落码 disp('因为抽样脉冲值在[16,32)之间,所以段落码为001') %第三段 else if Sampling_pulse_val>=32 && Sampling_pulse_val<64 start=32;%该段的起始电平 step=2;%该段的量化间隔 coded_output(2:4)=[0 1 0];%该段的段落码 disp('因为抽样脉冲值在[32,64)之间,所以段落码为010') %第四段 else if Sampling_pulse_val>=64 && Sampling_pulse_val<128 start=64;%该段的起始电平 step=4;%该段的量化间隔 coded_output(2:4)=[0 1 1];%该段的段落码 disp('因为抽样脉冲值在[64,128)之间,所以段落码为011') %第五段 else if Sampling_pulse_val>=128 && Sampling_pulse_val<256 start=128;%该段的起始电平 step=8;%该段的量化间隔 coded_output(2:4)=[1 0 0];%该段的段落码 disp('因为抽样脉冲值在[128,256)之间,所以段落码为100') %第六段 else if Sampling_pulse_val>=256 && Sampling_pulse_val<512 start=256;%该段的起始电平 step=16;%该段的量化间隔 coded_output(2:4)=[1 0 1];%该段的段落码 disp('因为抽样脉冲值在[256,512)之间,所以段落码为101') %第七段 else if Sampling_pulse_val>=512 && Sampling_pulse_val<1024 start=512;%该段的起始电平 step=32;%该段的量化间隔 coded_output(2:4)=[1 1 0];%该段的段落码 disp('因为抽样脉冲值在[512,1024)之间,所以段落码为110') %第八段 else if Sampling_pulse_val>=1024 && Sampling_pulse_val<2048 start=1024;%该段的起始电平 step=64;%该段的量化间隔 coded_output(2:4)=[1 1 1];%该段的段落码 disp('因为抽样脉冲值在[1024,2048)之间,所以段落码为111') end end end end end end endendposition=floor((Sampling_pulse_val-start)/step);%得到该抽样脉冲在段内的位置,确定段内码switch position case 0 str=['该抽样脉冲值位于第','(',num2str(Sampling_pulse_val),'-',num2str(start),')/',num2str(step),'=',num2str(position),'段,所以段内码为0000']; coded_output(5:8)=[0 0 0 0]; case 1 str=['该抽样脉冲值位于第','(',num2str(Sampling_pulse_val),'-',num2str(start),')/',num2str(step),'=',num2str(position),'段,所以段内码为0001']; coded_output(5:8)=[0 0 0 1]; case 2 str=['该抽样脉冲值位于第','(',num2str(Sampling_pulse_val),'-',num2str(start),')/',num2str(step),'=',num2str(position),'段,所以段内码为0010']; coded_output(5:8)=[0 0 1 0]; case 3 str=['该抽样脉冲值位于第','(',num2str(Sampling_pulse_val),'-',num2str(start),')/',num2str(step),'=',num2str(position),'段,所以段内码为0011']; coded_output(5:8)=[0 0 1 1]; case 4 str=['该抽样脉冲值位于第','(',num2str(Sampling_pulse_val),'-',num2str(start),')/',num2str(step),'=',num2str(position),'段,所以段内码为0100']; coded_output(5:8)=[0 1 0 0]; case 5 str=['该抽样脉冲值位于第','(',num2str(Sampling_pulse_val),'-',num2str(start),')/',num2str(step),'=',num2str(position),'段,所以段内码为0101']; coded_output(5:8)=[0 1 0 1]; case 6 str=['该抽样脉冲值位于第','(',num2str(Sampling_pulse_val),'-',num2str(start),')/',num2str(step),'=',num2str(position),'段,所以段内码为0110']; coded_output(5:8)=[0 1 1 0]; case 7 str=['该抽样脉冲值位于第','(',num2str(Sampling_pulse_val),'-',num2str(start),')/',num2str(step),'=',num2str(position),'段,所以段内码为0111']; coded_output(5:8)=[0 1 1 1]; case 8 str=['该抽样脉冲值位于第','(',num2str(Sampling_pulse_val),'-',num2str(start),')/',num2str(step),'=',num2str(position),'段,所以段内码为1000']; coded_output(5:8)=[1 0 0 0]; case 9 str=['该抽样脉冲值位于第','(',num2str(Sampling_pulse_val),'-',num2str(start),')/',num2str(step),'=',num2str(position),'段,所以段内码为1001']; coded_output(5:8)=[1 0 0 1]; case 10 str=['该抽样脉冲值位于第','(',num2str(Sampling_pulse_val),'-',num2str(start),')/',num2str(step),'=',num2str(position),'段,所以段内码为1010']; coded_output(5:8)=[1 0 1 0]; case 11 str=['该抽样脉冲值位于第','(',num2str(Sampling_pulse_val),'-',num2str(start),')/',num2str(step),'=',num2str(position),'段,所以段内码为1011']; coded_output(5:8)=[1 0 1 1]; case 12 str=['该抽样脉冲值位于第','(',num2str(Sampling_pulse_val),'-',num2str(start),')/',num2str(step),'=',num2str(position),'段,所以段内码为1100']; coded_output(5:8)=[1 1 0 0]; case 13 str=['该抽样脉冲值位于第','(',num2str(Sampling_pulse_val),'-',num2str(start),')/',num2str(step),'=',num2str(position),'段,所以段内码为1101']; coded_output(5:8)=[1 1 0 1]; case 14 str=['该抽样脉冲值位于第','(',num2str(Sampling_pulse_val),'-',num2str(start),')/',num2str(step),'=',num2str(position),'段,所以段内码为1110']; coded_output(5:8)=[1 1 1 0]; case 15 str=['该抽样脉冲值位于第','(',num2str(Sampling_pulse_val),'-',num2str(start),')/',num2str(step),'=',num2str(position),'段,所以段内码为1111']; coded_output(5:8)=[1 1 1 1];enddisp(str)disp('根据上述分析,该抽样脉冲的编码输出为:')disp(num2str(coded_output))%计算量化误差%首先计算译码输出out = start+position*step+0.5*step;%一定是正的% if Sampling_pulse_val<0% out=-out;%译码输出% endquantization_error=Sampling_pulse_val-out;%计算量化误差disp('____________________________________________')str_=['译码输出为:',num2str(start),'+',num2str(position),'*',num2str(step),'+0.5*',num2str(step),'=',num2str(out)];disp(str_)disp('量化误差为:')str_=[num2str(Sampling_pulse_val),'-',num2str(out),'=',num2str(quantization_error)];disp(str_)%计算对应的均匀量化11位码disp('____________________________________________')Uniform_quantization=dec2bin(abs(out),11);disp('对应于该7位码的均匀量化11位码为:')str_=num2str(Uniform_quantization);disp(str_)
阅读全文
1 0
- A律13折线码编码输出、量化误差、以及对应的11位均匀量化编码
- 抽样量化编码
- 信源编码:矢量量化
- Matlab实现均匀量化的简单示例
- Matlab实现均匀量化的简单实例
- 均匀量化(Matlab)
- a ~ y的25个字母,从1位到4位的编码,输出这个编码对应的Index.
- 量化与“Z”字编码
- 【数据压缩】Exp04_DPCM量化预测编码
- 信源编码---矢量量化算法
- 量化误差与噪声误差
- matlab对音频均匀量化
- 【信源编码 作业四】基于LBG的矢量量化算法
- 【信源编码作业四】基于LBG的矢量量化算法
- JPEG编码中的DCT与量化
- 信源编码(五)矢量量化
- 信源编码作业——矢量量化
- 信源编码作业五:矢量量化LGB
- Mac电脑使用:Mac系统的触发角使用
- qq,微信截图隐藏对话框
- 算法细节系列(19):广度搜索优先
- h5 form api 表单API
- swift 接入带css的webView
- A律13折线码编码输出、量化误差、以及对应的11位均匀量化编码
- 在Linux上如何验证已下载文件的真实性和完整性
- Container killed by YARN for exceeding memory limits.
- idea创建简单的web工程
- python数据库(一)
- Spring常用注释解析
- 基于腾讯Centos7云服务器搭建SVN版本控制库
- [leetcode: Python]412.Fizz Buzz
- Git-----Git中版本回退