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