exponenta event banner

innerprodintbits

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

Синтаксис

innerprodintbits(a,b)

Описание

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

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

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

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

Примеры

Основное использование этой функции заключается в определении количества целочисленных битов, необходимых для вывода Y фильтра FIR, который вычисляет внутреннее произведение между вектором строки с постоянным коэффициентом 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