Matlab仿真技术

乔世坤

目录

  • 1 实验一Matlab基础与入门
    • 1.1 Matlab简介
    • 1.2 变量与数值
    • 1.3 矩阵运算
    • 1.4 数组运算
    • 1.5 常用数学函数
    • 1.6 Matlab帮助系统
    • 1.7 实验内容
    • 1.8 思考题
  • 2 实验二 Matlab程序设计基础
    • 2.1 M文件
    • 2.2 Matlab程序流控制
    • 2.3 实验内容
    • 2.4 思考题
  • 3 实验三Matlab图形绘制
    • 3.1 二维曲线的绘制
    • 3.2 三维曲线的绘制
    • 3.3 实验内容
    • 3.4 思考题
  • 4 MATLAB数值计算与符号运算
    • 4.1 线性代数中的应用
    • 4.2 多项式运算
    • 4.3 数据分析与统计
    • 4.4 功能函数
    • 4.5 常微分方程的数值求值
    • 4.6 符号运算
    • 4.7 Matlab数值计算部分实验题
    • 4.8 Matlab符号运算部分实验题
    • 4.9 Matlab程序设计部分实验题
    • 4.10 思考题
  • 5 Simulink仿真基础
    • 5.1 Simulink概述
    • 5.2 Simulink建模与仿真
    • 5.3 子系统及其封装技术
    • 5.4 SIMULINK模块库简介
    • 5.5 Simulink仿真基础实验题
    • 5.6 Simulink仿真应用实验题
    • 5.7 思考题
  • 6 Matlab在电路分析中的应用
    • 6.1 Matlab在电路中的仿真应用
    • 6.2 数字逻辑电路仿真
    • 6.3 实验内容
    • 6.4 思考题
  • 7 MATLAB在信号与系统中的应用
    • 7.1 连续时间信号及其表示
    • 7.2 线性时不变系统
    • 7.3 线性时不变系统的时域分析
    • 7.4 线性时不变系统的频域分析
    • 7.5 实验内容
    • 7.6 思考题
  • 8 Matlab在数字信号处理中的应用
    • 8.1 信号的表示与信号的基本运算
    • 8.2 实验内容
    • 8.3 思考题
  • 9 MATLAB在通信原理中的应用
    • 9.1 脉冲编码调制仿真
    • 9.2 实验内容
脉冲编码调制仿真
  • 1 文档
  • 2 PPT


掌握脉冲编码调制量化与编码过程的基本仿真方法。初步了解通信系统的仿真方法。

利用预先规定的有限个电平来表示模拟信号抽样值的过程称为量化。从数学上看,量化过程就是把一个连续幅值的无限数集合映射成一个离散幅度的有限数的集合。量化的过程如图9-9所示,设是模拟信号,是量化器的输出电平,为量化区间端点,。当抽样速率为,第k个抽样值为,简写m,其输出的量化信号是,简写,它的值应是之一,当量化器输入的信号幅值落在之间时,量化输出电平为


9-9量化过程示意图

    量化的过程是一个近似的过程,不可避免地信源信号会有一定的失真,产生了量化误差,又称为误差噪声。误差大小是反映量化后失真的一个重要指标,一般标量量化误差用均方误差来度量量化误差。设基带信号为均值0,概率密度为的平稳随机过程,量化噪声的均方误差为:


量化器的性能还可用量化信噪比来衡量,它被定义为信号功率与量化噪声功率之比,即

1.均匀量化

把输入信号的取值域按等距离分割的量化称为均匀量化,在均匀量化中,每个量化区间的量化电平均取在各区间的中点,其量化间隔取决于输入信号的变化范围和量化电平数。

2.非均匀量化

非均匀量化是根据信号的不同区间来确定量化间隔的,对于信号取值小的区间,其量化间隔也小,反之,量化间隔就大。如对语音信号不同区间采用不同的量化间隔,对于经常出现的低幅度语音信号处,运用小的量化间隔,而在不经常出现的高幅度语音信号取值处,运用大的量化间隔。非均匀量化器输出端可以得到较高平均信号量化噪声功率比,改善了小信号时的信号量化噪声比。

    实际中,非均匀量化的实现方法通常将抽样值通过压缩再进行均匀量化。所谓压缩是用一个非线性变换电路将输入变量变换成另一个变量y,即

y=f(x)9-29

非均匀量化就是再对压缩后的变量y进行均匀量化。接收端采用与压缩特性相反的扩张器来恢复x。国际上通常使用μ律压缩或A律压缩。美国、加拿大、日本采用μ律压缩,我国和欧州各国均采用A律压缩。

A律压缩特性定义为:


μ律压缩特性定义为:

9.3.2脉冲编码调制

模拟信号进行数字传输时,需要对模拟信号进行抽样、量化、编码,形成数字信号后,在数字信号系统中传输。模拟信号数字化的方法大致分为波形编码和参数编码,目前用得最普遍的波形编码方法有脉冲编码调制(PCM)和增量调制(ΔM)。

脉冲编码调制主要包括抽样、量化、编码,抽样是把模拟信号转换成离散时间连续幅度的抽样信号,使其成为一系列离散的抽样值,量化是把离散时间连续幅度的抽样信号转换成离散时间离散幅度的数字信号,编码是把量化后的信号变换成代码的过程,其相反的过程称为译码。国际标准化的PCM码组(电话语音)是由八位码组成的,一个码组代表一个抽样值。

PCM中,每个波形样值都是独立编码,这样幅值编码需要较多位数,造成数字化的信号带宽大大增加。由于样值之间差值比样值本身小,用样点之间差值的编码来代替样值本身的编码,可以在量化级数不变的情况下,使编码位数显著减少,信号带宽大大压缩。这种利用差值的PCM编码称为差分PCMDPCM)。DPCM的量化信噪比显然优于PCM系统。

9.3.3 Matlab中相关函数

MatlabCommunicationSystem Toolbox提供有如下函数。

1.量化索引和量化输出值函数quantiz

   Matlab提供有量化索引和量化输出值函数quantiz,其常用格式如下:

[index,quants,distor]=quantiz(sig,partition,codebook)

说明sig是需量化的原始信号Partition用于设定量化间隔codebook设定量化的码书quants是输出的信号量化值index为输出量化索引即说明量化后sig元素落在partition所设的哪个间隔里distor是量化误差。

2.最佳量化器lloyds

    最佳量化器的设计目的就是期望量化过程中所取的量化间隔使得量化的噪声降低到最小,即将信号失真降低到最低程度。Matlab提供一种迭代算法,以量化误差的均方值最小为原则使用一定的训练数据,从初始码书出发进行循环迭代,直到量化误差小于一个门限。Matlab提供的最佳量化器采用训练序列和lloyd算法优化标量算法的函数是lloyds,其常用格式如下:

[partition,codebook]=lloyds(raining_set,initcodebook))

说明:raining_set代表用来训练的数据,initcodebook是码书的初始值。输出的codebook是设计出的量化器的码书,partition代表对量化区间分割。

[9-1] 对模拟信源进行均匀量化和采用最佳量化器量化,并比较量化误差值,要求量化区间小于0.2

t=[0:.2:2*pi];

sig=sin(t);

partition=[-1:.1:1];

codebook=[-1.1:.1:1];

[index,quants,distor]=quantiz(sig,partition,codebook);

[partition2,codebook2]=lloyds(sig,codebook);

[index2,quants2,distor2]=quantiz(sig,partition2,codebook2);

plot(t,sig,t,quants, 'bo:',t,quants2,'r*');

legend('输入信号','均匀量化',' lloyds最佳量化');

[distor,distor2]

程序执行后输出图9-10输出量化误差结果如下

ans =

   0.0036    0.0006

9-10量化输出

从结果图与量化误差值均可看出,lloyds函数设计的量化器量化误差小。

3μ律与A律压扩函数compand

    函数compand用于对信号按照A律或μ律进行压缩或扩大。基本格式如下:

   out = compand(in,Mu,v,'mu/compressor')

   out = compand(in,Mu,v,'mu/expander')

   out = compand(in,A,v,'A/compressor')

   out = compand(in,A,v,'A/expander')

说明:in代表输入信号,v代表输入最大取值,mu代表μ律压缩系数,A代表A律压缩系数,out是压缩或扩大的结果值。

[9-2] 输出A律压缩系数取不同值的压缩曲线。

程序如下,结果如图9-11 所示。

x=[-1:0.001:1];

y1=compand(x,87.65,max(x),'A/compressor');

y2=compand(x,1,max(x),'A/compressor');

y3=compand(x,10,max(x),'A/compressor');

plot(x,y1,x,y2,x,y3);grid on;

9-11A律压缩系数取不同值的压缩曲线

4.差分脉冲调制编码解码相关函数

1)差分脉冲调制编码函数dpcmenco的基本格式:

   [indx,quant] = dpcmenco(sig,codebook,partition,predictor)

说明:sig是需量化的输入信号,Predictor为预测器的传递函数,其形式为,预测误差的量化参数由Partitionpredictor指定。indx是返回的编码索引,quant量化值。输入参数可以由dpcmopt函数估计。

2)差分脉冲解码函数dpcmdeco的基本格式:

   sig = dpcmdeco(indx,codebook,predictor)

说明:根据编码索引indx进行解码,Predictor为指定的预测器,codebook是码书。

3)用训练数据优化差分脉冲调制参数函数dpcmopt,其基本格式为:

   [predictor,codebook,partition] = dpcmopt(training_set,ord,ini_cb)

说明:对给定的训练集的预测器进行估计,训练集及其顺序由training_setord指定,ini_cb可以是码书矢量的初值或其长度。输出预测器predictor,优先码书codebook,预测误差partition