基于matlab的模拟信号数字化仿真作者:***学号:**********摘要本文研究的主要内容模拟信号数字化Matlab软件仿真。
若信源输出的是模拟信号,如电话传送的话音信号,模拟摄像机输出的图像信号等,若使其在数字信道中传输,必须在发送端将模拟信号转换成数字信号,即进行A/D变换,在接收端则要进行D/A变换。
模拟信号数字化由抽样、量化、编码三部分组成。
由于数字信号的传送具有稳定性好,可靠性高,方便传送和传送等诸多优点,使得被广泛应用到各种技术中。
不仅如此,Matlab仿真软件是常用的工具之一,可用于通信系统的设计和仿真。
在科研教学方面发挥着重要的作用。
Matlab有诸多优点,编程简单,操作容易、处理数据迅速等。
本文主要阐述的是模拟信号数字化的理论基础和实现方法。
利用Matlab提供的可视化工具建立了数字化系统的仿真模型,详细讲述了抽样、量化、编码的设计,并指出了在仿真建模中要注意的问题。
在给定的仿真条件下,运行了仿真程序,得到了预期的仿真结果。
关键词:Matlab、模拟信号数字化、仿真1.1基本原理模拟信号的数字传输是指把模拟信号先变换为数字信号后,再进行传输。
由于与模拟传输相比,数字传输有着众多优点,因而此技术越来越受到重视。
此变化成为A/D变换。
A/D变换是把模拟基带信号变换喂数字基带信号,尽管后者的带宽会比前者大得很多,但本质上仍属于基带信号。
这种传输可直接采用基带传输,或经过熟悉调制后再做频带传输。
A/D变化包括抽样、量化、编码三个步骤,如图。
图1.模拟信号数字化1.1.1抽样定理抽样就是把模拟信号在时间上的连续变成离散的抽样值。
而能不能用这一系列抽样值重新恢复原信号,就需要抽样定理来解决了。
所以说,如果我们要传输模拟信号,可以通过传输抽样定理的抽样值来实现而不是非要传输原本的模拟信号。
模拟信号数字化的理论基础就是抽样定理,抽样定理的作用不言而喻。
抽样定理:设时间连续信号)f,其最高截止频率为m f,如果用时间间(t隔为 m f T 21≤的开关信号对)(t f 进行抽样时,则)(t f 就可被样值信号唯一地表示。
在一个频带限制在()h f ,0 内的时间连续信号 )(t f ,如果以小于等于h f 21 的时间间隔对它进行抽样,那么根据这些抽样值就能完全恢复原信号。
或者说,如果一个连续信号 )(t f 的频谱中最高频率不超过 h f ,这种信号必定是个周期性的信号,当抽样频率 h s f f ≥ 时,抽样后的信号就包含原连续信号的全部信息,而不会有信息丢失,当需要时,可以根据这些抽样信号的样本来还原原来的连续信号。
根据这一特性,可以完成信号的模-数转换和数-模转换过程。
图2.抽样定理举例来说,生活中常见的语音信号就是模拟信号,语音信号在幅度取值上是连续的,并且在时间上它也是连续的。
要想让语音信号实现数字化并实现时分多路复用,第一点就要对语音信号进行离散化处理,而这个处理过程就叫做抽样。
换种说法,抽样就是隔一段时间T (固定的时间间隔),抽取语音信号的一个抽样值(瞬时幅度值)。
这一系列在时间上离散的抽样值组成了样值序列。
样值序列可以实现时分多路复用,还可以将每个抽样值经过量化和编码两种过程转换成二进制的数字信号。
经多次理论研究和实践探索证明,抽样脉冲的时间间隔T ≤1/(2fH )(或者是f ≥2fH)(fH 是语音信号的最高频率),抽样以后的样值序列就可以不失真的被还原成原本的语音信号。
比如说,一路电话信号的频带为300~3400Hz ,fm=3400Hz ,则抽样频率fs ≥2×3400=6800Hz 。
如果按照抽样频率是6800Hz来对300Hz~3400Hz的电话信号进行抽样,那么进行抽样后的样值序列就可以不失真的还原成原本的语音信号,而语音信号的抽样频率一般取值是8000Hz。
对于PAL制电视信号,相信大家都非常熟悉。
PAL制电视信号的视频带宽通常为6MHz。
如果按照CCIR601的建议,亮度信号的抽样频率是13.5MHz,色度信号的抽样频率则为6.75MHz。
1.1.2模拟信号的量化抽样转换后的脉冲信号的幅度仍然是模拟的,要用数码来进行表示,就必须进行离散化的处理。
这就要求对幅值进行舍零取整的操作,此过程称为量化。
量化中具有两种方法:只舍不入和有舍有入。
量化方法中,取整的时候只舍不入,就是说0~1伏之间输入的所有电压输出都为0伏,1~2伏之间所有的输入电压输出都为1伏等等。
使用只舍不入方式时,输入的电压总是大于输出的电压,所以产生的量化误差通常是正的。
大小为两个相邻的量化级的间隔Δ。
量化方法中,取整的时候有舍有入,即0~0.5伏之间的输入电压输出都为为0伏,0.5~1.5伏之间的输出电压输出都为1伏等等。
采用有舍有入的方式时通常有正有负,量化的误差绝对值最大为Δ/2。
所以,通常采用误差相对较小的有舍有入的方法进行量化,仅仅使用量化的输出信号来代替原来的信号会存在失真。
通常来说,我们可以把量化误差的幅度概率分布看做是-Δ/2~+Δ/2之间的均匀分布。
这能够证明量化失真功率与最小的量化间隔的平方成正比例。
所以说,最小的量化间隔越小,失真就会越小;最小量化的间隔越小,用以表现一定幅度的模拟信号时所需要的量化级数就会越多。
所以,传输和处理起来就会越来越复杂。
因此,量化时既要尽可能的减少量化的级数,又要使量化失真不容易被看出来。
通常都要用一个二进制数来表达某一个量化级数,经过传输在接收端再依据这个表达量化级数的二进制数来恢复原来信号的幅值。
我们所说的量化比特数是说的要区分所有量化级数所需要的多少位二进制数。
比如说,现在有8个量化级,那么就可以用三位二进制数来进行区分,原因是,称8个量化级的量化是3比特量化。
而8比特量化则指的是一共有3个量化级的量化。
量化的误差与噪声相比,两者是有本质上的区别的。
原因是任何时刻的量化误差都是能够从输入信号中求出来的,然而信号与噪声之间则并没有这种关系。
这能够证明,量化的误差是高阶非线性失真的结果。
但是量化失真在信号中的表现却相似于噪声,两者同样有很宽的频谱,所以量化误差也被称作是量化噪声并且能够用信噪比来进行衡量。
上面所描述的方法称为线性量化,是采用均匀间隔量化级数来进行量化的方法。
这种量化方式有造成大信号时信噪比有余但是小信号时信噪比不够的缺点。
如果小信号时量化级间宽度小一点,大信号时量化级间的宽度大一点,小信号时信噪比和大信号时信噪比就会逐渐一致。
我们所熟知的数字电视信号通常就采用了这种非均匀量化的方法。
采用这种方法是因为模拟的视频信号通常需要进行校正,而这种校正类似于非线性的量化特性,能够减轻甚至消除小信号时误差带来的影响。
而对于音频信号的非均匀量化来说,现在也是采用了压缩、扩张的方式,也就是先在发送端对输入的信号进行压缩处理,然后进行均匀量化,最终在接收端对信号再进行相应的扩张处理。
在我国,现在采用的是A律13折线压扩特性。
因为采用13折线压扩特性后,小信号时量化信噪比的改善量相当可观,可以达到24dB。
但这是靠着牺牲大信号量化信噪比(亏损12dB)来对换的。
令量化器过载电压为1,相当于把输入信号进行归一化,那么A律对数压缩定义为:当0 <= x <= 1/A时,f(x)=(Ax)/(1+lnA)当1/A <= x <= 1时,f(x)=(1+lnAx)/(1+lnA)图3.非均匀量化图4匀量化特性与量化误差曲线1.1.3编码把经过抽样和量化后的信号变成数字编码脉冲,这个过程被称为是编码。
在所有编码方式中,最简单的就要属二进制编码了。
详细点说,就是利用n比特的二进制码来表示出已经量化过的抽样值,每一个二进制数都对应了一个量化值,然后再通过排列得到由二值脉冲所组成的数字化信息流。
在接收端,编码过程能够依据收到的信号重新组成原本的抽样值。
最后经过低通滤波器来恢复原来的信号,这种方式称为所传输数字信号的数码率。
显而易见,抽样频率高了,量化比特数就会越大,随之而来的是数码率的升高,需要的传输带宽也就越宽。
上述所说的是自然二进制码,除了这种二进制码还有其他形式的二进制码。
比如说格雷码和折叠二进制码等等。
这三种二进制码各有所长各有所短。
下面列举下它们的优缺点:(1)自然二进制码是和二进制数互相对应的,比较简单,容易执行。
因为它是权重码,所以每一位都有确定的大小,并且能够直接进行大小的比较和各种算术运算。
自然二进制码能够直接利用D/A(数/模)转换器转换成模拟信号。
但有一些特殊情况,比如从十进制的3转换成4时,二进制码的每一位都要进行变化,同时使数字电路产生相当大的尖峰电流脉冲。
2.1基于matlab的实验程序2.1.1均匀pcmMatlab函数u_pcm(a,n),该函数以样本序列和要求的量化电平数作为输入参数,求的以量化序列,编码序列,以及sqnr。
用4电平和16电平进行量化,并画出量化误差。
function[sqnr,a_quan,code]=u_pcm(a,n)amax=max(abs(a));a_quan=a/amax;b_quan=a_quan;d=2/n;q=d.*[0:n-1];q=q-((n-1)/2)*d;for i=1:na_quan(find((q(i)-d/2<=a_quan)&(a_quan<=q(i)+d/2)))=...q(i).*ones(1,length(find((q(i)-d/2<=a_quan)&(a_quan<=q(i)+d/2))));b_quan(find(a_quan==q(i)))=(i-1).*ones(1,length(find(a_quan==q(i))));enda_quan=a_quan*amax;nu=ceil(log2(n));code=zeros(length(a),nu);for i=1:length(a)for j=nu:-1:0if(fix(b_quan(i)/(2^j))==1)code(i,(nu-j))=1;b_quan(i)-2^j;endendendsqnr=20*log10(norm(a)/norm(a-a_quan));echo ont=[0:0.01:10];a=sin(t);[sqnr4,aquan4,code4]=u_pcm(a,4);[sqnr16,aquan16,code16]=u_pcm(a,16);pausesqnr4pausesqnr16pauseplot(t,a,'-',t,aquan4,'-.',t,aquan16,'-',t,zeros(1,length(t))) 2.1.2实验结果sqnr4 = 12.6197sqnr16 =25.12722.1.3非均匀pcm基于matlab的13折线近似A律压缩特性曲线和15折线近似U律压缩特性曲线的程序。