реклама на сайте
подробности

 
 
> модель шума квантования как равномерное распределение при входном гармоническом сигнале немного не совпадает со случайным сигналом, расхождение порядка 0,5 дБ. Почему?
Krys
сообщение Mar 31 2015, 07:15
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Здравствуйте. Модель шума квантования как равномерное распределение при входном гармоническом сигнале немного не совпадает со случайным сигналом, расхождение порядка 0,5 дБ. Почему?
Другими словами: имеем входной сигнал. Имеем 2 способа квантования: просто округление через функцию round и второй способ - добавление равномерного шума с диапазоном плюс-минус половина младшего разряда (это способ не столько квантования, сколько моделирования квантования). Шум определяется как разность результирующего квантованного сигнала и исходного, до квантования. Затем рассчитывается ОСШ.
Так вот, если входной сигнал является равномерным случайным распределением, то оба способа квантования дают одинаковый ОСШ, порядка 78 дБ для 13 битов. Это хорошо согласуется с теорией о 6 дБ на бит.
Однако, если входной сигнал - комплексная экспонента, то для неё первый способ даёт ОСШ 79,5 дБ, а второй способ - на 0,5 дБ лучше.
Хочу понять природу возникновения разницы.
Привожу матлабовский код и картинку с результатом:
CODE
%%
numParam.bwChIn = 13;
snrQ = [];
snrR = [];
% range for Ns order of power
nSOrdRng = 3 : 7;
fs = 1.25e6; % sample rate
Ts = 1/fs; % sample period
% frequency of input signal
f_x = fs/16;
T_x = 1/f_x;
% % signalType = 'random';
signalType = 'harmonic';
for nSOrd = nSOrdRng
Ns = 10^nSOrd;
% adjusting Ns to be integer number of input signal periods
fRatio = Ns * Ts / T_x;
Ns = round(fRatio) * T_x / Ts;
% create time scale
t = 0 : Ts : (Ns-1)*Ts;
% signal generation itself
if strcmp(signalType, 'harmonic')
x = exp(1i * 2 * pi * t * f_x).';
else
x = complex(rand(Ns, 1), rand(Ns, 1)) * 2 - (1 + 1i);
end
quantNoiseIn = (complex(rand(size(x)), rand(size(x))) - (0.5 + 1i*0.5)) / 2^(numParam.bwChIn-1);
xQ = x + quantNoiseIn;
xQErr = xQ - x;
xPwr = x' * x;
xErrPwr = xQErr' * xQErr;
snrQ = [snrQ 10*log10(xPwr/xErrPwr)];
xR = round(x*2^(numParam.bwChIn-1)) / 2^(numParam.bwChIn-1);
xRErr = xR - x;
xErrPwr = xRErr' * xRErr;
snrR = [snrR 10*log10(xPwr/xErrPwr)];
end
figure; hold on; grid on; plot(nSOrdRng, snrQ, nSOrdRng, snrR); hold off;


Прикрепленное изображение
Прикрепленное изображение


На картинке красным - первый способ, синим - второй. На левой картинке сигнал - гармонический, на правой - рандомный. В исходнике можно переключить signalType для рандомного и гармонического сигнала. По оси Х отложены степени числа точек выборки сигнала, для которой производился расчёт. Т.е. 7 - это 1е7 точек. По оси Y - ОСШ в дБ.

ЗЫ: маленько отредактировал сообщение. Добавил правую картинку для рандомного сигнала. Прошу заметить, что для рандомного и гармонического сигнала отличаются значения ОСШ, полученные даже путём округления round (первый способ): рандомный - 78 дБ, а гармонический - 79,5 дБ.
Однако для рандомного сигнала оба способа дают одинаковый результат, а для гармонического - другой результат, да ещё и отличающийся между способами. Мне в первую очередь хочется докопаться, почему есть различие ОСШ между двумя способами для гармонического сигнала. А во вторую очередь - почему отличается ОСШ для способа округления через round для случайного и гармонического сигнала.

И ещё: попробовал перейти на чисто вещественные числа. Поведение то же, числа те же.

Сообщение отредактировал Krys - Mar 31 2015, 08:42


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 04:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01339 секунд с 7
ELECTRONIX ©2004-2016