<< conv2 correlation_convolution convol2d >>

Scilab Help >> Signal Processing > correlation_convolution > convol

convol

Свёртка

Синтаксис

y = convol(h, x)
[y,e1] = convol(h, x, e0)

Аргументы

h

вектор, первая входная последовательность ("короткая");

x

вектор, вторая входная последовательность ("длинная");

e0

вектор, старый остаток для добавления перекрытия (не используется в первом вызове);

y

вектор, свёртка;

e1

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

Описание

Вычисляет свёртку y= h*x двух дискретных последовательностей с помощю БПФ (fft). Свёртка определяется следующим образом: y_k = sum_j( h_j * x_{k+1-j} )

Может быть использован метод добавления перекрытия.

ИСПОЛЬЗОВАНИЕ МЕТОДА ДОБАВЛЕНИЯ ПЕРЕКРЫТИЯ: Для x = [x1, x2,..., xNm1, xN] Первый вызов: [y1, e1] = convol(h, x1); Последующие вызовы: [yk, ek] = convol(h, xk, ekm1); Последний вызов: [yN] = convol(h, xN, eNm1); Наконец y = [y1, y2,..., yNm1, yN].

Алгоритм, основанный на определении свёртки, реализован для произведения полиномов: y = convol(h, x) эквивалентен y = coeff(poly(h,'z','c') * poly(x,'z','c')), но гораздо более эффективен, если x является "длинным" массивом.

Примеры

x = 1:3;
h1 = [1,0,0,0,0];
h2 = [0,1,0,0,0];
h3 = [0,0,1,0,0];
x1 = convol(h1, x)
x2 = convol(h2, x)
x3 = convol(h3, x)
convol(h1+h2+h3, x)
p1 = poly(x,'x','coeff')
p2 = poly(h1+h2+h3, 'x', 'coeff')
p1 * p2

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


Report an issue
<< conv2 correlation_convolution convol2d >>