conv

Свертка и умножение полиномов fi объекты

Описание

пример

c = conv(a,b) возвращает свертку входных векторов a и b, по крайней мере одним из которых должен быть fi объект.

пример

c = conv(a,b,shape) возвращает часть свертки, как задано shape.

Примеры

свернуть все

Найдите свертку последовательности с 22 выборками с КИХ-фильтром с 16 касаниями.

x последовательность с 22 выборками значений со знаком с размером слова 16 битов и дробной длиной 15 битов. h КИХ-фильтр с 16 касаниями.

u = (pi/4)*[1 1 1 -1 -1 -1 1 -1 -1 1 -1]; 
x = fi(kron(u,[1 1]));
h = firls(15, [0 .1 .2 .5]*2, [1 1 0 0]);

Поскольку x fi объект, вы не должны бросать h в fi объект прежде, чем выполнить операцию свертки. conv функция делает это автоматически масштабирование лучшей точности использования.

Используйте conv функция, чтобы применить операцию свертки к этим двум векторам.

y = conv(x,h);

Операция приводит к fi со знаком объект y с размером слова 36 битов и дробной длиной 31 бита. fimath по умолчанию свойства, сопоставленные с входными параметрами, определяют numerictype из выхода. Выход не имеет локального fimath.

Создайте два fi векторы. Найдите центральную часть свертки a и b это одного размера с a.

a = fi([-1 2 3 -2 0 1 2]);
b = fi([2 4 -1 1]);
c = conv(a,b,'same')
c = 

    15     5    -9     7     6     7    -1

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 34
        FractionLength: 25

c имеет длину 7. Полная свертка имела бы длину length(a)+length(b)-1, который в этом примере был бы 10.

Входные параметры

свернуть все

Входные векторы или в виде строки или в виде вектор-столбцов.

Если любой вход является встроенным типом данных, conv броски это в fi объект, использующий правила лучшей точности перед выполнением операции свертки.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
Поддержка комплексного числа: Да

Подмножество свертки в виде одного из этих значений:

  • 'full' — Возвращает полную свертку. Эта опция является формой по умолчанию.

  • 'same' — Возвращает центральную часть свертки, которая одного размера с входным вектором a.

  • 'valid' — Возвращает только те части свертки, которую функция вычисляет без дополненных нулем ребер. Используя эту опцию, длину выходного вектора c max(length(a)-max(0,length(b)-1),0).

Типы данных: char

Больше о

свернуть все

Свертка

Свертка двух векторов, u и v, представляет область перекрытия под точками как v скользит по u. Алгебраически, свертка является той же операцией как умножение полиномов, коэффициенты которого являются элементами u и v.

Позвольте m = length(u) и n = length(v) . Затем w вектор из длины m+n-1 чей kэлемент th

w(k)=ju(j)v(kj+1).

Сумма по всем значениям j тот вывод к легальным индексам для u(j) и v(k-j+1), в частности j = max(1,k+1-n):1:min(k,m). Когда m = n, это дает

w(1) = u(1)*v(1)
w(2) = u(1)*v(2)+u(2)*v(1)
w(3) = u(1)*v(3)+u(2)*v(2)+u(3)*v(1)
...
w(n) = u(1)*v(n)+u(2)*v(n-1)+ ... +u(n)*v(1)
...
w(2*n-1) = u(n)*v(n)

Алгоритмы

fimath свойства, сопоставленные с входными параметрами, определяют numerictype свойства выхода fi объект c:

  • Если любой a или b имеет локальный fimath объект, conv использование, что fimath объект вычислить промежуточные количества и определить numerictype свойства c.

  • Если никакой a ни b имейте присоединенный fimathconv использует fimath по умолчанию вычислить промежуточные количества и определить numerictype свойства c.

Если любой вход является встроенным типом данных, conv броски это в fi объект, использующий правила лучшей точности перед выполнением операции свертки.

Выход fi объект c всегда использует fimath по умолчанию.

Расширенные возможности

Смотрите также

Представленный в R2009b