通信原理实验报告2.doc_第1页
通信原理实验报告2.doc_第2页
通信原理实验报告2.doc_第3页
通信原理实验报告2.doc_第4页
通信原理实验报告2.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通信原理实验报告课程名称:通信原理实验三:二进制数字信号调制仿真实验实验四:模拟信号数字传输仿真实验姓 名:学号:班级:2012年12 月 实验三 二进制数字信号调制仿真实验一、实验目的1. 加深对数字调制的原理与实现方法;2. 掌握OOK、2FSK、2PSK功率谱密度函数的求法;3. 掌握OOK、2FSK、2PSK功率谱密度函数的特点及其比较;4. 进一步掌握MATLAB中M文件的调试、子函数的定义和调用方法。2、 实验内容 1. 复习二进制数字信号幅度调制的原理2. 编写MATLAB程序实现OOK调制;3. 编写MATLAB程序实现2FSK调制;4. 编写MATLAB程序实现2PSK调制;5. 编写MATLAB程序实现数字调制信号功率谱函数的求解。 3、 实验原理在数字通信系统中,需要将输入的数字序列映射为信号波形在信道中传输,此时信源输出数字序列,经过信号映射后成为适于信道传输的数字调制信号。数字序列中每个数字产生的时间间隔称为码元间隔,单位时间内产生的符号数称为符号速率,它反映了数字符号产生的快慢程度。由于数字符号是按码元间隔不断产生的,经过将数字符号一一映射为响应的信号波形后,就形成了数字调制信号。根据映射后信号的频谱特性,可以分为基带信号和频带信号。通常基带信号指信号的频谱为低通型,而频带信号的频谱为带通型。调制信号为二进制数字基带信号时,对应的调制称为二进制调制。在二进制数字调制中,载波的幅度、频率和相位只有两种变化状态。相应的调制方式有二进制振幅键控(OOK/2ASK)、二进制频移键控(2FSK)和二进制相移键控(2PSK)。下面分别介绍以上三种调制方法的原理,及其MATLAB实现:本实验研究的基带信号是二进制数字信号,所以应该首先设计MATLAB程序生成二进制数字序列。根据实验一的实践和第一部分的介绍,可以很容易的得到二进制数字序列生成的MATLAB程序。假定要设计程序产生一组长度为500的二进制单极性不归零信号,以之作为后续调制的信源,并求出它的功率谱密度,以方便后面对已调信号频域特性和基带信号频域特性的比较。整个过程可用如下程序段实现:%定义相关参数clear all;close all;A=1fc=2; %2Hz;N_sample=8;N=500; %码元数Ts=1; %1 Baud/sdt=Ts/fc/N_sample; %波形采样间隔t=0:dt:N*Ts-dt;Lt=length(t);%产生二进制信源d=sign(randn(1,N);%dd=sigexpand(d+1)/2,fc*N_sample);N1=length(d+1)/2);dd=zeros(fc*N_sample,N1);dd(1,:)=(d+1)/2;dd=reshape(dd,1,fc*N_sample*N1);gt=ones(1,fc*N_sample);%NRZ波形figure(1)subplot(221);%输入NRZ信号波形(单极性)d_NRZ=conv(dd,gt);plot(t,d_NRZ(1:length(t);axis(0 10 0 1.2); ylabel (输入信号);subplot(222);%输入NRZ频谱dt=t(2)-t(1);T=t(end);df=1/T;N=length(d_NRZ(1:length(t);f=-N/2*df:df:N/2*df-df;d_NRZf=fft(d_NRZ(1:length(t);d_NRZf=T/N*fftshift(d_NRZf);plot(f,10*log10(abs(d_NRZf).2/T);axis(-2 2 -50 10);ylabel(输入信号功率谱密度(dB/Hz);3.2 OOK调制二进制振幅键控(OOK/2ASK)是利用载波的幅度变化来传递数字信息的,而其频率和初始相位保持不变。在2ASK中,载波的幅度只有两种变化状态,分别对应二进制信息“0”和“1”。2ASK信号的一般表达式为:其中,。所以,要进行OOK调制,定义完二进制数字序列和载波参量后,将之相乘即可。相关的MATLAB指令如下:ht=A*cos(2*pi*fc*t);s_2ask=d_NRZ(1:Lt).*ht;subplot(223)plot(t,s_2ask);axis(0 10 -1.2 1.2);ylabel(OOK);要对OOK调制之前与之后信号的频域特性进行比较,可以通过比较两者的功率谱密度曲线来实现。也就是求出OOK调制信号s_2ask的功率谱密度函数,并将之与3.1中求得的基带信号的功率谱密度函数进行比较。根据通信原理的学习,可以知道,求解某信号功率谱密度的过程就是先求出该信号的傅立叶变换,再求该傅立叶变换的幅值的绝对值的平方的过程。如何求功率谱密度函数在实验二中已经详细介绍过了,本处不再赘述。根据前面的介绍,我们已经知道要求得某信号的傅立叶变换,可以通过调用实验一附录中的T2F子函数实现,也可以直接编程实现。实验二中使用的都是子函数调用的方式,下面给出直接编程实现傅立叶变换的MATLAB程序:dt=t(2)-t(1);T=t(end);df=1/T;N=length(s_2ask);f=-N/2*df:df:N/2*df-df;s_2askf=fft(s_2ask);s_2askf=T/N*fftshift(s_2askf);subplot(224)plot(f,10*log10(abs(s_2askf).2/T);axis(-fc-4 fc+4 -50 10);ylabel(OOK功率谱密度(dB/Hz));通过以上程序,我们将基带信号波形及其功率谱密度曲线,OOK调制信号及其功率谱密度曲线分别画在了同一个图的四个子图中,以方便对调制前后信号的频域特性进行比较。3.3 2FSK调制频移键控是利用载波的频率的变化来传递数字信息的。在2FSK中,载波的频率随二进制基带信号在f1和f2两个频率点间变化。故其表达式为:通信原理中已经介绍过,2FSK信号的调制可通过两个方法实现,一是将2FSK信号理解为两路不同频率的ASK信号相加的结果;二是将2FSK信号表示成如下的形式:第一种方法实现起来相当简单,直接参照3.2中ASK信号的产生方法,产生两路不同频率的ASK信号,将之相加即可得到2FSK信号,这种方法留待同学们课后自己实现。下面我们介绍用第二种方法产生2FSK信号的MATLAB程序设计过程。首先,为了使2FSK信号不至覆盖了前面产生的信号,新建一个图,其指令为:figure(2)然后,在这个图上画2FSK信号的波形,及其功率谱密度曲线波形。%2FSK%s_2fsk=A*cos(2*pi*fc*t+int(2*d_NRZ-1);sd_2fsk=2*d_NRZ-1;s_2fsk=A*cos(2*pi*fc*t+2*pi*sd_2fsk(1:length(t).*t);subplot(223)plot(t,s_2fsk);axis(0 10 -1.2 1.2 );xlabel(t);ylabel(2FSK)subplot(224)求出2FSK调制信号的功率谱密度函数:%f,s_2fsk=T2F(t,s_2fsk);dt=t(2)-t(1);T=t(end);df=1/T;N=length(s_2fsk);f=-N/2*df:df:N/2*df-df;s_2fsk=fft(s_2fsk);s_2fsk=T/N*fftshift(s_2fsk);plot(f,10*log10(abs(s_2fsk).2/T);axis(-fc-4 fc+4 -50 10);xlabel(f);ylabel(2FSK功率谱密度(dB/Hz);3.4 2PSK调制相移键控是利用载波的相位变化来传递数字信息,而振幅和频率保持不变。以载波的不同相位直接去表示相应二进制数字信号的调制方式,称为二进制绝对相移键控(2PSK)。其时域表达式为:与2ASK信号的产生方法相比较,2PSK和2ASK只是对s(t)的要求不同,在2ASK中s(t)是单极性的,而在2PSK中s(t)是双极性的基带信号。除此之外,所有的设计流程都是相似的。参考程序如下:%2PSK 信号d_2psk=2*d_NRZ-1;s_2psk=d_2psk(1:Lt).*ht;subplot(221)plot(t,s_2psk);axis(0 10 -1.2 1.2);ylabel(2PSK);subplot(222)求出2PSK调制信号的功率谱密度函数:%f,s_2pskf=T2F(t,s_2psk);dt=t(2)-t(1);T=t(end);df=1/T;N=length(s_2psk);f=-N/2*df:df:N/2*df-df;s_2pskf=fft(s_2psk);s_2pskf=T/N*fftshift(s_2pskf);plot(f,10*log10(abs(s_2pskf).2/T);axis(-fc-4 fc+4 -50 10);ylabel(PSK功率谱密度(dB/Hz));四、实验内容(1)按照如上介绍的方法,分别产生一组长度为500的二进制单极性不归零信号和归零信号,存档名为Q3_1。并求分别求出它们的功率谱密度。请写出相应的MATLAB程序,将不归零信号波形及功率谱和归零信号波形及功率谱分别画在同一图形的四个子图中,将结果图保存,贴在下面的空白处。程序:clear all; close all; A=1 fc=2; %2Hz; N_sample=8; N=500; %码元数 Ts=1; %1 Baud/s dt=Ts/fc/N_sample; %波形采样间隔 t=0:dt:N*Ts-dt; Lt=length(t); %产生二进制信源 d=sign(randn(1,N); %dd=sigexpand(d+1)/2,fc*N_sample); N1=length(d+1)/2); dd=zeros(fc*N_sample,N1); dd(1,:)=(d+1)/2; dd=reshape(dd,1,fc*N_sample*N1); gt=ones(1,fc*N_sample);%NRZ 波形 gt2=ones(1,fc*N_sample/2)%RZboxing/figure(1) subplot(221);%输入 NRZ信号波形(单极性) d_NRZ=conv(dd,gt); plot(t,d_NRZ(1:length(t); axis(0 10 0 1.2); ylabel (输入信号); subplot(222);%输入NRZ频谱 dt=t(2)-t(1); T=t(end); df=1/T; N=length(d_NRZ(1:length(t); f=-N/2*df:df:N/2*df-df; d_NRZf=fft(d_NRZ(1:length(t); d_NRZf=T/N*fftshift(d_NRZf); plot(f,10*log10(abs(d_NRZf).2/T); axis(-2 2 -50 10);ylabel(输入信号功率谱密度(dB/Hz); %/subplot(223);%输入 NRZ信号波形(单极性) d_RZ=conv(dd,gt2); plot(t,d_RZ(1:length(t); axis(0 10 0 1.2); ylabel (输入信号); subplot(224);%输入NRZ频谱 dt=t(2)-t(1); T=t(end); df=1/T; N=length(d_RZ(1:length(t); f=-N/2*df:df:N/2*df-df; d_RZf=fft(d_RZ(1:length(t); d_RZf=T/N*fftshift(d_RZf); plot(f,10*log10(abs(d_RZf).2/T); axis(-2 2 -50 10);ylabel(输入信号功率谱密度(dB/Hz);图形:(2)对刚才产生的长度为500的不归零波形对载波频率为2Hz,幅度为1的余弦信号进行OOK调制,并求出调制信号的功率谱密度。编写程序实现之,存档名为Q3_2。要求将不归零信号波形及功率谱和OOK调制信号波形及功率谱分别画在同一图形的四个子图中,图形名为图2,将结果图保存,贴在下面的空白处。程序:clear all; close all; A=1 fc=2; %2Hz; N_sample=8; N=500; %码元数 Ts=1; %1 Baud/s dt=Ts/fc/N_sample; %波形采样间隔 t=0:dt:N*Ts-dt; Lt=length(t); %产生二进制信源 d=sign(randn(1,N); %dd=sigexpand(d+1)/2,fc*N_sample); N1=length(d+1)/2); dd=zeros(fc*N_sample,N1); dd(1,:)=(d+1)/2; dd=reshape(dd,1,fc*N_sample*N1); gt=ones(1,fc*N_sample);%NRZ 波形 figure(1) subplot(221);%输入 NRZ信号波形(单极性) d_NRZ=conv(dd,gt); plot(t,d_NRZ(1:length(t); axis(0 10 0 1.2); ylabel (输入信号); subplot(222);%输入NRZ频谱 dt=t(2)-t(1); T=t(end); df=1/T; N=length(d_NRZ(1:length(t); f=-N/2*df:df:N/2*df-df; d_NRZf=fft(d_NRZ(1:length(t); d_NRZf=T/N*fftshift(d_NRZf); plot(f,10*log10(abs(d_NRZf).2/T); axis(-2 2 -50 10);ylabel(输入信号功率谱密度(dB/Hz); ht=A*cos(2*pi*fc*t); s_2ask=d_NRZ(1:Lt).*ht; subplot(223) plot(t,s_2ask); axis(0 10 -1.2 1.2); ylabel(OOK); dt=t(2)-t(1); T=t(end); df=1/T; N=length(s_2ask); f=-N/2*df:df:N/2*df-df; s_2askf=fft(s_2ask); s_2askf=T/N*fftshift(s_2askf); subplot(224) plot(f,10*log10(abs(s_2askf).2/T); axis(-fc-4 fc+4 -50 10); ylabel(OOK功率谱密度(dB/Hz));(3)按照3.3所提供的2FSK调制的思路和范例程序,运用(1)产生的不归零码组对载波频率为2Hz,幅度为1的余弦信号进行2FSK调制,存档为Q3_3,并将所得的结果存盘,贴在下面空格处。编写的程序为:clear all; close all; A=1 fc=2; %2Hz; N_sample=8; N=500; %码元数 Ts=1; %1 Baud/s dt=Ts/fc/N_sample; %波形采样间隔 t=0:dt:N*Ts-dt; Lt=length(t); %产生二进制信源 d=sign(randn(1,N); %dd=sigexpand(d+1)/2,fc*N_sample); N1=length(d+1)/2); dd=zeros(fc*N_sample,N1); dd(1,:)=(d+1)/2; dd=reshape(dd,1,fc*N_sample*N1); gt=ones(1,fc*N_sample);%NRZ 波形 figure(1) subplot(221);%输入 NRZ信号波形(单极性) d_NRZ=conv(dd,gt); plot(t,d_NRZ(1:length(t); axis(0 10 0 1.2); ylabel (输入信号); subplot(222);%输入NRZ频谱 dt=t(2)-t(1); T=t(end); df=1/T; N=length(d_NRZ(1:length(t); f=-N/2*df:df:N/2*df-df; d_NRZf=fft(d_NRZ(1:length(t); d_NRZf=T/N*fftshift(d_NRZf); plot(f,10*log10(abs(d_NRZf).2/T); axis(-2 2 -50 10);ylabel(输入信号功率谱密度(dB/Hz); %2FSK %s_2fsk=A*cos(2*pi*fc*t+int(2*d_NRZ-1); sd_2fsk=2*d_NRZ-1; s_2fsk=A*cos(2*pi*fc*t+2*pi*sd_2fsk(1:length(t).*t); subplot(223) plot(t,s_2fsk); axis(0 10 -1.2 1.2 ); xlabel(t); ylabel(2FSK) subplot(224) %f,s_2fsk=T2F(t,s_2fsk); dt=t(2)-t(1); T=t(end); df=1/T; N=length(s_2fsk); f=-N/2*df:df:N/2*df-df; s_2fsk=fft(s_2fsk); s_2fsk=T/N*fftshift(s_2fsk); plot(f,10*log10(abs(s_2fsk).2/T); axis(-fc-4 fc+4 -50 10);xlabel(f); ylabel(2FSK 功率谱密度(dB/Hz);图形:(4)按照3.4所提供的2PSK调制的思路和范例程序,运用(1)产生的不归零码组对载波频率为2Hz,幅度为1的余弦信号进行2PSK调制,存档为Q3_4,并将所得的结果存盘,贴在下面空格处。编写的程序为:clear all; close all; A=1 fc=2; %2Hz; N_sample=8; N=500; %码元数 Ts=1; %1 Baud/s dt=Ts/fc/N_sample; %波形采样间隔 t=0:dt:N*Ts-dt; Lt=length(t); %产生二进制信源 d=sign(randn(1,N); %dd=sigexpand(d+1)/2,fc*N_sample); N1=length(d+1)/2); dd=zeros(fc*N_sample,N1); dd(1,:)=(d+1)/2; dd=reshape(dd,1,fc*N_sample*N1); gt=ones(1,fc*N_sample);%NRZ 波形 figure(1) subplot(221);%输入 NRZ信号波形(单极性) d_NRZ=conv(dd,gt); plot(t,d_NRZ(1:length(t); axis(0 10 0 1.2); ylabel (输入信号); subplot(222);%输入NRZ频谱 dt=t(2)-t(1); T=t(end); df=1/T; N=length(d_NRZ(1:length(t); f=-N/2*df:df:N/2*df-df; d_NRZf=fft(d_NRZ(1:length(t); d_NRZf=T/N*fftshift(d_NRZf); plot(f,10*log10(abs(d_NRZf).2/T); axis(-2 2 -50 10);ylabel(输入信号功率谱密度(dB/Hz); ht=A*cos(2*pi*fc*t); %2PSK 信号 d_2psk=2*d_NRZ-1; s_2psk=d_2psk(1:Lt).*ht; subplot(223) plot(t,s_2psk); axis(0 10 -1.2 1.2); ylabel(2PSK); subplot(224) %f,s_2pskf=T2F(t,s_2psk); dt=t(2)-t(1); T=t(end); df=1/T; N=length(s_2psk); f=-N/2*df:df:N/2*df-df; s_2pskf=fft(s_2psk); s_2pskf=T/N*fftshift(s_2pskf); plot(f,10*log10(abs(s_2pskf).2/T); axis(-fc-4 fc+4 -50 10); ylabel(PSK 功率谱密度(dB/Hz));图形:(5) 按照3.4所提供用两路不同频率的2ASK信号合成一路2FSK信号的思想,设计相关程序实现之,存档为Q3_5,并将所得的结果存盘,贴在下面空格处。程序:clear all;close all;clc;%随机产生一个包含十个元素的数组,该数组中的元素非0即1,用作FSK信号的输入数据。 x=1 0 1 1 0 0 0 1 0 1; %产生10个非零数N=length(x); %码元个数fl=100; %载频低频fh=500; %载频高频fs=10000; %采样频率ts=1/100; %码元速率100波特,即每秒传递100个码元,ts为传递一个码元的时间 N1=ts*fs/fh; %传递一个码元的时间间隔含有的采样波形数为5个,高频的N2=ts*fs/fl; %传递一个码元的时间间隔含有的采样波形数为1个,低频的tt=(0:1/fs:ts-1/fs); %传递一个码元的时间间隔内,以每一个采样波形的周期为间隔划分时间,采样N_tt=length(tt); %一个码元时间间隔内的采样点数,100t=0:1/fs:N*ts-1/fs; %时间间隔串,以一个码元传递时间为时间间隔%对该输入信号FSK调制%循环语句实现调制for i=1:1:N for j=1:1:N_tt y(i,j)=x(i)*cos(2*pi*fh*tt(j)+x(i)*cos(2*pi*fl*tt(j); end end%改变矩阵大小y=reshape(y,1,);%绘制图形%调制前的二进制随机序列图subplot(311)stem(0:N-1,x(1:N),bx);title(调制前的二进制随机序列)xlabel(Time);ylabel(Amplitude);hold on subplot(312)plot(t,y);title(FSK信号的时域图形); N_y=length(y); %时域调制信号长度1000y_fft=fft(y)/N_y; %傅里叶变换 y_fft=fftshift(y_fft); f=linspace(-fs/2,fs/2,N_y); %频域向量(-5000Hz-5000Hz)hold onsubplot(313)plot(f,abs(y_fft); %绘图title(FSK信号的频域图形); set(gca,XTick,-fs/2:5000:fs/2); (6)根据上面的介绍,我们可以获得基带信号、2ASK调制信号、2FSK调制信号和2PSK调制信号的功率谱,请分析并比较这四个信号功率谱曲线的异同。答:2ASK是通过信号有无来进行调制的,比如幅度A为有信号,幅度0为无信号;2PSK是通过相位来进行调制的,对2PSK则使用两个相位,两个信号的相位相差180度,即pi,如其中一个信号为A*exp(-j*m),那么另外一个信号就是A*exp(-j(m+pi),如果m=0,那就是最简单的2PSK,调制信号分别为A和-A;如果是QPSK,则使用4个相位,相位之间相差pi/2。实验四 模拟信号数字传输仿真实验一、实验目的1. 进一步理解抽样定理的原理和实现方法;2. 掌握非均匀量化的原理和实现方法;3. 掌握编码的原理和实现方法;4. 掌握MATLAB中M文件的调试方法及子函数的定义与调用。二、实验内容1. 编写MATLAB程序实现对模拟信号的抽样2编写MATLAB程序实现运用A律13折线法对抽样后的信号进行量化3编写MATLAB程序实现运用u律对抽样后的信号进行量化4编写MATLAB程序实现PCM编码三、实验原理实验中的信源通常都是模拟的,如电视信号、麦克风拾取的语音信号等。为了能够利用数字通信的方式,需要将模拟信号进行数字化。数字化的过程一般由抽样、量化和编码组成。其中,抽样要保证不丢失原始数据,量化要满足一定的质量,编码解决信号的表示。3.1 抽样对于带宽受限的信号,抽样定理表明,采用一定速率的抽样,可以无失真地表示原始信号。带宽受限信号的抽样可以由如下两个定理来保证抽样后的信号能无失真恢复出原始信号。抽样的过程就是将输入的模拟信号与抽样信号相乘而得,通常抽样信号是一个周期为Ts的周期脉冲信号,抽样后得到的信号称为抽样序列。理想抽样信号定义如下:其中,称为抽样频率。因此抽样后信号为:3.1.1 低通信号的抽样定理一个频带为0,fH的低通信号x(t),可以无是失真地被抽样速率的抽样序列所恢复,即:如果抽样速率低于2,则抽样后的信号频域发生混叠,无法无失真恢复原始信号。下面我们介绍低通信号抽样和抽样信号恢复的MATLAB仿真过程。假设模拟低通信源的其表达式为:x(t)=Acsin2t,对信号进行抽样,再从抽样序列中恢复出原始信号。具体的实现步骤如下:1 生成题目要求的模拟低通信源这个工作前面的实验中已经反复做过,如何设置参数和设计流程前文已经有详细的介绍,在此不再赘述。具体的程序如下:clear all;close all;dt=0.01;t=0:dt:10;xt=0.1*cos(0.15*pi*t)+1.5*sin(2.5*pi*t)+0.5*cos(4*pi*t);f,xf=T2F(t,xt);2 抽样根据低通抽样定理,用一的抽样频率对模拟低通信源进行抽样。由于此处信号的最高频率为2Hz,则假定以4Hz抽样速率对信源进行抽样。具体的过程如下:%抽样信号,抽样速率为4Hzfs=4;sdt=1/fs;t1=0:sdt:10;st=0.1*cos(0.15*pi*t1)+1.5*sin(2.5*pi*t1)+0.5*cos(4*pi*t1);f1,sf=T2F(t1,st); 3 从抽样信号中恢复出原信号根据抽样信号为:设计MATLAB程序实现上式,即可从抽样信号中无失真的恢复原信号。t2=-50:dt:50;gt=sinc(fs*t2);stt=sigexpand(st,sdt/dt);xt_t=conv(stt,gt);用画图指令在同一图形中画出以上的三个信号波形,可明显的比较出原信号与抽样后恢复信号之间的差别。figure(1)subplot(311);plot(t,xt);axis(0 10 -4 4);title(原始信号);xlabel(t);hold on;plot(t1,st,go);axis(0 10 -4 4);%hold on;%t3=-50:dt:60+sdt-dt;%plot(t3,xt_t,r-);%title(抽样恢复信号);%axis(0 10 -4 4);subplot(312);plot(t1,st,ro);axis(0 10 -4 4);title(抽样信号);xlabel(t1);subplot(313);t3=-50:dt:60+sdt-dt;plot(t3,xt_t);title(抽样恢复信号);hold on;plot(t,xt,r-);axis(0 10 -4 4);3.1.2 带通信号的抽样定理一个频带为fL,fH的带通信号x(t),其信号带宽为, ,其中,分别表示信号最高频率除以带宽B的整数、小数部分,可以通过最低抽样速率为的抽样序列无失真恢复。3.2 量化为了能用数字的方式处理信源的输出,必须将抽样信号的取值离散化,将之规定在某一有限的数值上,这一过程称为量化。因此量化是一个信息有损的过程,将量化带来的信息损失,称为量化误差,也叫量化噪声。量化器如图所示:设输入信号取值区间为,量化器函数Q(x)是一个分段函数,可以写成如下形式:其中,称为分层电平,称为电平,称为量化间隔,L称为量化电平数。由上式可得到量化后输入与信号差的平均功率,即量化噪声的平均功率为:其中是输入信号的概率密度。由于量化误差的存在,量化器可以看成如下图所示模型:衡量量化器的性能指标为量化信噪比,量化理论研究的是在给定输入信号概率密度及量化电平数L的条件下,如何使量化噪声的平均功率最小,量化信噪比最大。一般来说,量化可分为标量量化和矢量量化。在标量量化中,对每个信号样值进行量化,而矢量量化是对一组信号样值量化。本节将重点讨论标量量化器中的均匀量化器和非均匀量化器。3.2.1 均匀量化均匀量化时,各量化间隔相同,量化电平取在量化间隔的中点,因此量化器输出为:此时量化噪声平均功率为:当L很大时,很小,量化信噪比可以定义为:当输入信号是均匀分布,且时,则量化间隔为,量化信噪比为:即量化信噪比只于量化电平数有关。3.2.2 非均匀量化均匀量化时,量化噪声平均功率只取决于量化间隔,对于均匀分布的输入信号而言,输出量化信噪比恒定;而对非均匀分布、非平稳的输入信号,如语音信号,采用均匀量化,当输入信号功率小时量化信噪比小,输入信号功率大时量化信噪比大,造成量化后输出信号的信噪比起伏,影响恢复信号质量。实际通信中,将满足量化信噪比要求的输入信号功率范围称为量化器的输入动态范围。相比非均匀量化,为了满足输入语音信号动态范围的要求,均匀量化往往需要更多的量化电平数。非均匀量化时,量化器随输入信号的大小采用不同的量化间隔,大信号时采用大的量化间隔,小信号时采用小的量化间隔,可以以较小的量化电平数达到输入动态范围的要求。目前,语音信号的数字化采用两种对数压缩特性,其中中国和欧洲采用A律压缩特性(A87.6),北美和日本采用u律压缩特性(u255)。其压缩特性分别如下:用MATLAB指令实现这两种压缩特性曲线的程序如下:A-U-law% demo for u and a law for quantize, filename: a_u_law.m% u=255 y=ln(1+ux)/ln(1+u)% A=87.6 y=Ax/(1+lnA) (0x1/A) y=(1+lnAx)/(1+lnA)clear all;close all;dx=0.01;x=-1:dx:1;u=255;A=87.6; % u lawyu=sign(x).*log(1+u*abs(x)/log(1+u);% A lawfor i=1:length(x) if abs(x)1/A ya(i)=A*x(i)/(1+log(A); else ya(i)=sign(x(i)*(1+log(A*abs(x(i)/(1+log(A); endend实际应用中,采用折现来近似上述的压缩特性,其中A律压缩特性可以用13折线近似,u律压缩特性可以用15折线近似。用13折线近似A律压缩特性曲线的方法如下,对于归一化输入x属于-1,+1,归一化输出y属于-1,+1,压缩特性曲线关于原点奇对称,以下仅提供第一象限情况。Y平均等分为8个区间,x的区间划分为: 0,1/128, 1/128,1/64, 1/64, 1/32, 1/32, 1/16, 1/16, 1/8, 1/8, 1/4, 1/4, 1/2, 1/2,1分别对应的y区间为:0,1/8, 1/8,2/8, 2/8, 3/8, 3/8, 4/8, 4/8, 5/8, 5/8, 6/8, 6/8, 7/8, 7/8,1。将各区间端点相连,即构成A律13折线近似压缩曲线。假定时间间隔为0.01,设定A律压缩曲线合适的时间范围x,以及13折线合适的时间范围xx,分别画出这两条曲线。在同一图形上画出A律压缩特性和13折线近似曲线的程序如下:%program 4_1figure(1)plot(x,ya,k.:);title(A law);xlabel(x);ylabel(y);grid on;hold on;xx=-1,-1/2,-1/4,-1/8,-1/16,-1/32,-1/64,-1/128,1/128,1/64,1/32,1/16,1/8,1/4,1/2,1;yy=-1,-7/8,-6/8,-5/8,-4/8,-3/8,-2/8,-1/8,1/8,2/8,3/8,4/8,5/8,6/8,7/8,1;plot(xx,yy,r);stem(xx,yy,b-.);legend(A律压缩折线,折线近似A律);%axis(0,1,0,1);类似的,用15折线近似u律压缩特性曲线的方法如下,当u=255时,对于归一化输入x属于-1,+1,归一化输出y属于-1,+1,压缩特性曲线关于原点奇对称,以下仅提供第一象限情况。Y平均等分为8个区间,x的区间划分为: 0,1/255, 1/255,3/255, 3/255, 7/255, 7/255, 15/255, 15/255, 31/255, 31/255, 63/255, 63/255, 127/255, 127/255,1分别对应的y区间为:0,1/8, 1/8,2/8, 2/8, 3/8, 3/8, 4/8, 4/8, 5/8, 5/8, 6/8, 6/8, 7/8, 7/8,1。将各区间端点相连,即构成u律15折线近似压缩曲线。在同一图形上画出u律压缩特性和15折线近似曲线的程序如下:%program 4_2figure(2)plot(x,yu,k.:);title(u law);xlabel(x);ylabel(y);grid on;hold on;xx=-1,-127/255,-63/255,-31/255,-15/255,-7/255,-3/255,-1/255,1/255,3/255,7/255,15/255,31/255,63/255,127/255,1;yy=-1,-7/8,-6/8,-5/8,-4/8,-3/8,-2/8,-1/8,1/8,2/8,3/8,4/8,5/8,6/8,7/8,1;plot(xx,yy,r);stem(xx,yy,b-.);legend(u律压缩折线,折线近似u律);axis(0,1,0,1);3.3 编码对模拟信号进行抽样、量化,将量化后的信号电平值变换为二进制码组的过程称为编码,其逆过程称为译码。理论上,任何一种从量化电平值到二进制码组的一一映射都可以做为一种编码。目前常用的编码主要有:折叠码、自然码和格雷码等。在语音信号的数字化国际标准G.711中,采用了折叠码编码。输入的语音信号经过抽样、量化后,每个抽样值编码成8个比特的二进制码组。根据前面编写的抽样、量化的程序,参照其思路,设计MATLAB程序完成对输入信号x(t)=Acsin(2t)的抽样和量化,并对量化信号的A律PCM编码,经过传输后,接收端进行PCM译码的全过程。%program 4_3% show the pcm encode and decodeclear all;close all;t=0:0.01:10;vm1=-70:1:0; %输入的信号幅值不同vm=10.(vm1/20);figure(1)for k=1:length(vm) for m=1:2 x=vm(k)*sin(2*pi*t+2*pi*rand(1); v=1; xx=x/v; % mormalize sxx=floor(xx*4096); y=pcm_encode(sxx); yy=pcm_decode(y,v); nq(m)=sum(x-yy).*(x-yy)/length(x); sq(m)=mean(yy.2); snr=(sq(m)/nq(m); drawnow subplot(211) plot(t,x); title(抽样序列); subplot(212) plot(t,yy) title(PCM译码序列); end snrq(k)=10*log10(mean(snr);end四、实验步骤(1)按照3.1介绍的抽样原理,运行提供的范例程序,将得到的结果图贴在如下的空白处。实验结果图为:clear all; close all; dt=0.01; t=0:dt:10; xt=0.1*cos(0.15*pi*t)+1.5*sin(2.5*pi*t)+0.5*cos(4*pi*t); f,xf=T2F(t,xt); %抽样信号,抽样速率为4Hz fs=4; sdt=1/fs; t1=0:sdt:10; st=0.1*cos(0.15*pi*t1)+1.5*sin(2.5*pi*t1)+0.5*cos(4*pi*t1); f1,sf=T2F(t1,st); t2=-50:dt:50; gt=sinc(fs*t2); stt=sigexpand(st,sdt/dt); xt_t=conv(stt,gt); figure(1) subplot(311); plot(t,xt); axis(0 10 -4 4); title(ZX AND LZ原始信号); xlabel(t); hold on; plot(t1,st,go); axis(0 10 -4 4); subplot(312); plot(t1,st,ro); axis(0 10 -4 4); title(ZX AND LZ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论