MATLAB Communication System(4)通信系统的信源与信道一

1.信源产生函数

1.1产生误比特图样:randerr

 对于所有的语法,randerr对out的每一行都进行独立处理。

out = randerr(m) 生成一个m乘m的二进制矩阵,其中每一行在随机位置上都有一个非零条目。每个可允许的配置都有相等的概率。

out = randerr(m,n) 生成一个m乘n的二进制矩阵,其中每一行在随机位置都有一个非零条目。每个可允许的配置都有相等的概率。

out = randerr(m,n,errors) 使用输入的error来确定输出的m乘n的二进制矩阵中每一行的非零条目数。

如果errors是一个标量,它是每行的非零条目数。

如果errors是一个行向量,它列出了每一行中可能的非零条目数。

如果errors是一个有两行的矩阵,第一行列出每行可能的非零条目数,第二行列出对应于可能的错误计数的概率。错误第二行中的元素之和必须为1。

一旦randerr确定了某一行的非零条目数,该非零条目数的每个配置都有相等的概率。

out = randerr(m,n,errors,seed) 接受一个用于初始化统一随机数发生器rand的种子值。

out = randerr(m,n,errors,streamhandle) 接受一个随机流句柄,通过使用rand生成均匀随机噪声样本。提供一个随机流句柄或在默认的随机流对象上使用重置函数,可以使你产生可重复的噪声样本。如果你想生成可重复的噪声样本,那么在调用randerr之前,要么重置随机流输入,要么使用相同的种子输入。更多信息请参见RandStream。

1.2根据给定的数字表产生一个随机符号矩阵:randsrc

out = randsrc生成一个随机标量,它要么是-1,要么是1,概率相同。

out = randsrc(m) 生成一个m乘m的随机双极矩阵。每个条目都独立地取值-1或1,概率相同。

out = randsrc(m,n) 生成一个m乘n的随机双极矩阵。每个条目都以相同的概率独立取值-1或1。

out = randsrc(m,n,alphabet) 生成一个m乘n的矩阵,每个条目都是独立地从行向量alphabet中的条目中选择。字母表中的每个条目都以相同的概率出现在out中。字母表中的重复值会被忽略。

out = randsrc(m,n,[alphabet; prob]) 生成一个m乘n的矩阵,每个条目都是从行向量字母表的条目中独立选择的。字母表中的重复值被忽略。行向量prob列出了相应的概率,因此符号alphabet(k)出现的概率为prob(k),其中k是1和alphabet的列数之间的任何整数。prob的元素加起来必须是1。

out = randsrc(m,n,___,seed) 接受来自先前语法的输入组合和一个种子值,用于初始化统一随机数发生器rand。

out = randsrc(m,n,___,streamhandle) 接受来自先前语法的输入组合和一个随机流句柄,通过使用rand来生成均匀随机噪声样本。提供一个随机流句柄或在默认的随机流对象上使用重置函数,可以使你产生可重复的噪声样本。如果你想生成可重复的噪声样本,那么要么在调用randsrc之前重置随机流输入,要么使用相同的种子输入。更多信息请参见RandStream。

2.信源编码/解码函数

2.1算术二进制码编码:arithenco

根据指定向量seq对应的符号序列产生二进制算术代码,向量counts代表信源中指定符号在数据集合中出现的次数统计。

解码:arithdeco

 解码二进制算术代码code,恢复相应的len符号序列。

2.2差分码调制编码:

indx = dpcmenco(sig,codebook,partition,predictor) 实现差分脉冲编码调制,对向量sig进行编码。partition是一个向量,其条目给出分区间隔的端点。codebook是一个长度超过分区长度1的向量,为量化中的每个分区规定了一个值。predictor指定预测传递函数。如果传递函数具有预测阶数M,预测器的长度为M+1,初始条目为0。输出向量indx是量化指数。

参见差分脉冲编码调制,了解更多关于预测器的格式。参见Represent Partitions,Represent Partitions,或本章中quantiz的参考页,以了解分区和编码本的格式。

[indx,quants] = dpcmenco(sig,codebook,partition,predictor) 与上面的语法相同,只是quants包含基于量化参数的sig的量化,quants是一个与sig大小相同的向量。

 解码: 

sig = dpcmdeco(indx,codebook,predictor) 实现差分脉冲编码解调,对向量indx进行解码。矢量编码本代表预测性错误量化编码本。矢量预测器指定了预测传递函数。如果传递函数有预测阶数M,预测器的长度为M+1,初始条目为0。为了正确解码,在dpcmenco和dpcmdeco中使用相同的编码簿和预测器。

参见Represent Partitions、Represent Codebooks或quantiz参考页,以了解分区和编码本的格式描述。

[sig,quanterror] = dpcmdeco(indx,codebook,predictor)与上述语法相同,只是向量quanterror是基于量化参数的预测误差的量化。quanterror与sig大小相同。

 2.3信号压缩/扩展:compand

out = compand(in,Mu,v) 实现了对输入矢量in的µ-law压缩。Mu指定了μ,v是输入信号的最大幅度。out的尺寸和最大幅度与in相同。

out = compand(in,Mu,v,'mu/compressor') 与上述语法相同。

out = compand(in,Mu,v,'mu/expander')为输入矢量in实现一个µ-law扩展器。Mu指定了μ,v是输入信号的最大幅度,out的尺寸和最大幅度与in相同。

out = compand(in,A,v,'A/compressor') 对输入向量in实现A-law压缩。标量A是A-law参数,v是输入信号的最大幅度。out是一个长度和最大幅度与in相同的矢量。

out = compand(in,A,v,'A/expander') 为输入向量in实现一个A-law扩展器。标量A是A-law参数,v是输入信号的最大振幅,out是一个长度和最大振幅与in相同的矢量。

2.4使用Lloyd算法优化量化参数:lloyds

[partition,codebook] = lloyds(training_set,initcodebook) 针对向量training_set中的训练数据优化标量量化参数partition和codebook。 initcodebook是一个长度至少为2的向量,是codebook值的初始猜测。输出编码本是一个与initcodebook相同长度的向量。输出分区是一个矢量,其长度比编码本的长度少一个。

请参阅Represent Partitions, Represent Codebooks, 或本章中quantiz的参考页,以了解分区和编码本的格式。

注意
lloyds针对training_set中的数据进行优化。为了获得最佳效果,training_set应该与你打算量化的数据相似。

[partition,codebook] = lloyds(training_set,len) 与第一种语法相同,只是标量参数len表示矢量codebook的大小。这种语法不包括初始编码本的猜测。

[partition,codebook] = lloyds(training_set,...,tol) 与上述两种语法相同,只是在下面的算法描述的条件1中,tol代替了10-7。

[partition,codebook,distor] = lloyds(...) 返回变量distor的最终均方变形。

[partition,codebook,distor,reldistor] = lloyds(...) 返回一个与算法终止有关的值reldistor。在下面算法的条件1中,reldistor是最后两次迭代之间失真的相对变化。在条件2中,reldistor与distor相同。

2.5产生量化指数和量化的输出值:quantiz

index = quantiz(sig,partition) 返回使用参数partition的实数向量信号sig的量化水平。partition是一个实数向量,其条目严格按照升序排列。如果partition的长度为n,index是一个向量,其第k个条目为

如果sig(k)≤partition(1)则为0

如果partition(m) < sig(k) ≤ partition(m+1) 则为m

n 如果分区(n) < sig(k)

[index,quants] = quantiz(sig,partition,codebook) 与上面的语法相同,只是codebook为量化中的每个分区规定了一个值,quants包含基于量化水平和规定值的sig的量化。codebook是一个向量,其长度比分区的长度多一。quants是一个行向量,其长度与sig的长度相同。

quants(ii) = codebook(index(ii)+1)。
其中ii是1和length(sig)之间的一个整数。

[index,quants,distor] = quantiz(sig,partition,codebook)与上述语法相同,只是distor估计这个量化数据集的均方失真。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岳小诺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值