innerprodintbits

Количество целочисленных битов необходимо для скалярного произведения фиксированной точки

Синтаксис

innerprodintbits(a,b)

Описание

innerprodintbits(a,b) вычисляет минимальное количество целочисленных битов, необходимых в скалярном произведении a'*b, чтобы гарантировать, что никакое переполнение не происходит и сохранить лучшую точность.

  • a и b являются векторами fi.

  • Значения a известны.

  • Только числовой тип b релевантен. Значения b проигнорированы.

Примеры

Первичное использование этой функции должно определить количество целочисленных битов, необходимых в выводе Y КИХ-фильтра, который вычисляет скалярное произведение между постоянным содействующим вектором - строкой B и вектор-столбцом состояния Z. Например,

      for k=1:length(X);
        Z = [X(k);Z(1:end-1)];
        Y(k) = B * Z;
      end

Алгоритмы

В целом скалярное произведение выращивает биты log2(n) для векторов длины n. Однако в случае этой функции векторный a известен, и его значения не изменяются. Это знание используется, чтобы вычислить самое маленькое количество целочисленных битов, которые необходимы в выводе, чтобы гарантировать, что никакое переполнение не произойдет.

Самое большое усиление происходит, когда векторный b имеет тот же знак как постоянный векторный a. Поэтому самым большим усилением из-за векторного a является a*sign(a'), который равен sum(abs(a)).

Общее количество целочисленных битов, необходимых, чтобы гарантировать, что никакое переполнение не происходит в скалярном произведении, вычисляется:

n = ceil(log2(sum(abs(a)))) + number of integer bits in b + 1 sign bit

Дополнительный знаковый бит только добавляется, если и a и b подписываются, и b достигает своего минимума. Это предотвращает переполнение в случае (-1) * (-1).

Представлено до R2006a

Для просмотра документации необходимо авторизоваться на сайте