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

 
 
 
Reply to this topicStart new topic
> Как нормировать амплитуды в целочисленной арифметике?
bognev
сообщение Apr 27 2015, 10:21
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 4-06-11
Пользователь №: 65 475



Добрый день!
Возник вопрос нормировки амплитуды Ci сигналов в 16 каналах. Требуется найти среднее значение AV по 16 каналам и соответсвенно отнормировать сигнал в каждом канале в AV/Ci раз. Возможное отклонение в каналах в 2 раза. Обработка ведется в целочисленной арифметике uint16 на virtex6. Проблема именно в том как домножить значение в канале если AV/Ci от 0 до 2 в целочисленной арифметике?

Сообщение отредактировал bognev - Apr 27 2015, 10:22
Go to the top of the page
 
+Quote Post
serjj
сообщение Apr 27 2015, 11:17
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Здравствуйте.

Псевдокод (не специалист в псевдокоде, поэтому как есть)
Код
vector [15:0] x;
vector [15:0] y;
vector [15:0] c;
vector [31:0] mult;
...
mult = x * c;
y = mult >> (16-1);


Коэффициент с при этом нормируется на разрядную сетку 16 бит, поэтому он равен 0 ... 65535. Сдвиг на 15 бит вместо ожидаемых логически 16 обеспечит эквивалентный диапазон для с 0 ... 2.

ЗЫ. Ну и чтобы получить нормированный с его можно посчитать как
Код
c  = (AV << 16) / Ci


Сообщение отредактировал serjj - Apr 27 2015, 11:25
Go to the top of the page
 
+Quote Post
bognev
сообщение Apr 27 2015, 12:34
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 4-06-11
Пользователь №: 65 475



Цитата(serjj @ Apr 27 2015, 14:17) *
Здравствуйте.

Псевдокод (не специалист в псевдокоде, поэтому как есть)
Код
vector [15:0] x;
vector [15:0] y;
vector [15:0] c;
vector [31:0] mult;
...
mult = x * c;
y = mult >> (16-1);


Коэффициент с при этом нормируется на разрядную сетку 16 бит, поэтому он равен 0 ... 65535. Сдвиг на 15 бит вместо ожидаемых логически 16 обеспечит эквивалентный диапазон для с 0 ... 2.

ЗЫ. Ну и чтобы получить нормированный с его можно посчитать как
Код
c  = (AV << 16) / Ci


Благодарю за помощь.
Go to the top of the page
 
+Quote Post
Krys
сообщение May 18 2015, 06:15
Сообщение #4


Гуру
******

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



Но возникнет ошибочка (еле заметная правда). Сдвиг даёт изменение на 2^N, а максимальный множитель может быть только 2^N - 1. Т.е. ошибка будет на один шаг квантования. В системах с обратными связями (типа адаптивные) это приведёт к расходимости алгоритма.


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

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

 


RSS Текстовая версия Сейчас: 15th June 2025 - 17:43
Рейтинг@Mail.ru


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