我有一个信号具有复杂的正态分布,均值为0,方差为1,我想用一个统一的量化器将它量化到512级。我用MATLAB生成信号的方式如下-
s = sqrt(0.5).*(randn(1,numBits) + 1i*randn(1,numBits));我以下列方式将信号量化在范围内(-1,1)和512电平:
min = -1;
max = 1;
q = (max-min)/2^9;
quantSignal = round(s/q)*q;这是量化这样一个信号的正确方法吗?如果能对此提出意见,我将不胜感激。
发布于 2015-09-26 03:16:19
您使用的量化公式将将输入值映射到量化版本。但是,它不会将结果限制在512个级别,因为您的输入信号可以超过[-1,+1]范围,并且您没有做任何事情来限制量化器输出(或相应的输入)。
要限制值,可以使用min和max内置函数。然而,由于它们与复数的模一起工作,你必须先将这些数字除以它们的实部和虚部。因此,在[minValue,maxValue]范围内用实部和虚部对复数进行量化,可以这样做:
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),所以这可以通过
maxValue = 4.2*sqrt(0.5);
minValue = -maxValue;如果您需要量化输出的实部和虚部被限制到特定的范围,那么您可以在量化器的输出处应用一个缩放因子(例如,除以4.2*sqrt(0.5),得到约束于[-1,+1]的实部和虚部)。
https://stackoverflow.com/questions/32778021
复制相似问题