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 объект перед выполнением операции свертки. The 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 чьи kth элемент есть

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)

Алгоритмы

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

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

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

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

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

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

.

См. также

Введенный в R2009b