首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用均匀量化器对复杂信号进行matlab量化

用均匀量化器对复杂信号进行matlab量化
EN

Stack Overflow用户
提问于 2015-09-25 08:32:12
回答 1查看 2.2K关注 0票数 2

我有一个信号具有复杂的正态分布,均值为0,方差为1,我想用一个统一的量化器将它量化到512级。我用MATLAB生成信号的方式如下-

代码语言:javascript
复制
s = sqrt(0.5).*(randn(1,numBits) + 1i*randn(1,numBits));

我以下列方式将信号量化在范围内(-1,1)和512电平:

代码语言:javascript
复制
min = -1;

max = 1;

q = (max-min)/2^9;

quantSignal = round(s/q)*q;

这是量化这样一个信号的正确方法吗?如果能对此提出意见,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-26 03:16:19

您使用的量化公式将将输入值映射到量化版本。但是,它不会将结果限制在512个级别,因为您的输入信号可以超过[-1,+1]范围,并且您没有做任何事情来限制量化器输出(或相应的输入)。

要限制值,可以使用minmax内置函数。然而,由于它们与复数的模一起工作,你必须先将这些数字除以它们的实部和虚部。因此,在[minValue,maxValue]范围内用实部和虚部对复数进行量化,可以这样做:

代码语言:javascript
复制
q = (maxValue-minValue)/(2^9-1);
realPart = min(max(real(s),minValue),maxValue);
realPart = minValue + round((realPart-minValue)/q)*q;
imagPart = min(max(imag(s),minValue),maxValue);
imagPart = minValue + round((imagPart-minValue)/q)*q;
quantSignal = realPart + j*imagPart;

我在前面提到过,通常情况下,具有单位方差的正常信号将不限于[-1,1]范围(或任何范围)。因此,通常尝试最小化量化误差的度量,例如均方误差(非量化输入与相应量化输出之间的平方差的期望值)。

对于均匀量化器和给定的特定信号特性(在这种情况下是复高斯信号),这种均方误差是量化级别数和量化器输入范围的函数。对于512级,实部和虚部最好在+/- 4.2标准偏差范围内。因为您的标准差是实部和虚部的sqrt(0.5),所以这可以通过

代码语言:javascript
复制
maxValue = 4.2*sqrt(0.5);
minValue = -maxValue;

如果您需要量化输出的实部和虚部被限制到特定的范围,那么您可以在量化器的输出处应用一个缩放因子(例如,除以4.2*sqrt(0.5),得到约束于[-1,+1]的实部和虚部)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32778021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档