отфильтруйте (Поле Галуа)

1D цифровой фильтр по Полю Галуа

Синтаксис

y = filter(b,a,x)
[y,zf] = filter(b,a,x)

Описание

y = filter(b,a,x) фильтрует данные в векторном x с фильтром, описанным вектором коэффициентов числителя b и вектор коэффициентов знаменателя a. Векторы b, a и x должны быть векторами Галуа в том же поле. Если a(1) не равен 1, filter нормирует коэффициенты фильтра a(1). В результате a(1) должен быть ненулевым.

Фильтр является Прямой Формой II Транспонированных реализаций стандартного разностного уравнения, показанного здесь:

a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb) ...
                      - a(2)*y(n-1) - ... - a(na+1)*y(n-na)

[y,zf] = filter(b,a,x) возвращает итоговые условия задержек фильтра вектора Галуа zf. Длиной векторного zf является max(size(a),size(b))-1.

Примеры

свернуть все

При использовании Галуа 1D цифровая функция filter данные нормированы первым элементом вектора коэффициентов знаменателя.

a = gf([2 3 5 7],3);
b = gf([1 3],3);
x = gf(randi([0,7],10,1),3);
filt_x = filter(b,a,x)
 
filt_x = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)
 
Array elements = 
 
   6
   6
   3
   4
   7
   4
   2
   2
   0
   5

Первый коэффициент вектора коэффициентов знаменателя, (1) = 2. Подтвердить функцию нормирует данные, вручную нормируйте отфильтрованные данные. Используйте isequal, чтобы сравнить выходные параметры, мы видим, что они равны.

filt_x2 = a(1) * filter(b/a(1),a,x)
 
filt_x2 = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)
 
Array elements = 
 
   6
   6
   3
   4
   7
   4
   2
   2
   0
   5
isequal(filt_x,filt_x2)
ans = logical
   1

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

Представлено до R2006a