exponenta event banner

conv

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

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

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-й элемент -

w (k) =∑ju (j) v (k − j + 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 иметь прикрепленный fimath, conv использует значение по умолчанию fimath для вычисления промежуточных величин и определения numerictype свойства c.

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

Продукция fi объект c всегда использует значение по умолчанию fimath.

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

.

См. также

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