set2int

Сконфигурируйте фильтр для целочисленной фильтрации

Синтаксис

set2int(h)
set2int(h,coeffwl)
set2int(...,inwl)
g = set2int(...)

Описание

Этот раздел применяется к дискретному времени (dfilt) фильтры.

set2int(h) масштабирует коэффициенты фильтра к целочисленным значениям и устанавливает коэффициент фильтра и вводит дробные длины, чтобы обнулить.

set2int(h,coeffwl) использует количество битов, заданных coeffwl как размер слова это использует, чтобы представлять коэффициенты фильтра.

set2int(...,inwl) использует количество битов, заданных coeffwl как размер слова это использует, чтобы представлять коэффициенты фильтра и количество битов, заданных inwl как размер слова, чтобы представлять входные данные.

g = set2int(...) возвращает усиление g введенный в фильтр путем масштабирования коэффициентов фильтра до целых чисел. g всегда вычисляется, чтобы быть степенью 2.

Примечание

set2int не работает с CIC decimators или интерполяторами, потому что у них нет коэффициентов.

Примеры

свернуть все

Две части включают этот пример. Часть 1 выдерживает сравнение, переходной процесс КИХ просачиваются и дробные и целочисленные режимы фильтра. Дробная фильтрация режима является по существу противоположностью целочисленного режима. Целочисленный режим использует фильтр, которому представляли коэффициенты целые числа. Дробным фильтрам режима представляли коэффициенты в дробной форме (ненулевая дробная длина).

Вторая часть примера зависит от следующего - после того, как вы фильтруете набор данных, входные данные и выходные данные покрывают ту же область значений значений, если процесс фильтра не вводит усиление в выходе. Преобразование вашего объекта фильтра к целочисленной форме, и затем фильтрация набора данных, действительно вводят усиление в систему. Когда примеры относятся к сбросу выхода к той же области значений как вход, примеры составляют эту добавленную опцию усиления.

b = rcosdesign(.25,4,25,'sqrt');
hd = dfilt.dffir(b);
hd.Arithmetic = 'fixed';
hd.InputFracLength = 0; % Integer inputs.
x = ones(100,1);
yfrac = filter(hd,x); % Fractional mode output.
g = set2int(hd);      % Convert to integer coefficients.
yint = filter(hd,x);  % Integer mode output.

Обратите внимание на то, что yint и yfrac fi объекты. Позже в этом примере, используйте fi свойства объектов WordLength и FractionLength работать с выходными данными. Теперь используйте усиление g чтобы перемасштабировать выход от целочисленного режима фильтруют операцию. Проверьте, что масштабированный целочисленный выход равен дробному выходу.

yints = double(yint)/g;

Проверьте, что масштабированный целочисленный выход равен дробному выходу.

max(abs(yints-double(yfrac)))
ans = 0

В части второй пример дает иное толкование выходным двоичным данным, помещая вход и выход по той же шкале путем взвешивания старших значащих битов во входных и выходных данных одинаково.

WL = yint.WordLength;
FL = yint.FractionLength + log2(g);
yints2 = fi(zeros(size(yint)),true,WL,FL);
yints2.bin = yint.bin;
max(abs(double(yints2)-double(yfrac)))
ans = 0
Введенный в R2011a