фильтр

Одномерный цифровой фильтр объектов fi

Синтаксис

y = filter(b,1,x)
[y,zf] = filter(b,1,x,zi)
y = filter(b,1,x,zi,dim)

Описание

y = filter(b,1,x) фильтрует данные в векторе фиксированной точки x с помощью фильтра, описанного вектором фиксированной точки b. Функция возвращает отфильтрованные данные в объекте y вывода fi. Входные параметры b и x должны быть объектами fi. filter всегда действует по первому неодноэлементному измерению. Таким образом фильтр действует по первому измерению для вектор-столбцов и нетривиальных матриц, и вдоль второго измерения для векторов - строк.

[y,zf] = filter(b,1,x,zi) предоставляет доступ к начальным и итоговым условиям задержек, zi и zf. zi является вектором длины length(b)-1 или массив с ведущей размерностью размера length(b)-1 и с остальными измерениями, совпадающими с теми из x. zi должен быть объектом fi с совпадающим типом данных как y и zf. Если вы не задаете значение для zi, это принимает значение по умолчанию к массиву фиксированной точки со значением 0 и соответствующего numerictype и размера.

y = filter(b,1,x,zi,dim) выполняет операцию фильтрации в заданном измерении. Если вы не хотите задавать вектор начальных условий, используйте [] для входного параметра zi.

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

b

Вектор фиксированной точки коэффициентов фильтра.

x

Вектор фиксированной точки, содержащий данные для функции, чтобы отфильтровать.

zi

Вектор фиксированной точки, содержащий начальные условия задержек. Если начальные условия задержек являются нулем, можно задать нуль, или, если вы не знаете соответствующего размера и numerictype для zi, используйте [].

Если вы не задаете значение для zi, значений по умолчанию параметра к вектору фиксированной точки со значением нуля и того же numerictype и размера как вывод zf (значение по умолчанию).

dim

Размерность, по которой можно выполнить операцию фильтрации.

Выходные аргументы

y

Выходной вектор, содержащий отфильтрованные данные фиксированной точки.

zf

Выходной вектор фиксированной точки, содержащий итоговые условия задержек.

Примеры

свернуть все

Следующий пример фильтрует высокочастотную синусоиду фиксированной точки от сигнала, который содержит и минимум - и высокочастотную синусоиду фиксированной точки.

w1 = .1*pi;
w2 = .6*pi;
n  = 0:999;
xd = sin(w1*n) + sin(w2*n);
x  = sfi(xd,12);
b  = ufi([.1:.1:1,1-.1:-.1:.1]/4,10);
gd = (length(b)-1)/2;
y  = filter(b,1,x);
 
% Plot results, accommodate for group-delay of filter
plot(n(1:end-gd),x(1:end-gd))
hold on
plot(n(1:end-gd),y(gd+1:end),'r--')
axis([0 50 -2 2])
legend('Unfiltered signal','Filtered signal')
xlabel('Sample index (n)')
ylabel('Signal value')

Получившийся график показывает обоим неотфильтрованные и отфильтрованные сигналы.

Больше о

свернуть все

Отфильтруйте длину (L)

Длиной фильтра является length(b) или количество коэффициентов фильтра, заданных в векторе фиксированной точки b.

Отфильтруйте порядок (N)

Порядок фильтра является количеством состояний (задержки) фильтра и равен L-1.

Советы

  • Функция filter только поддерживает КИХ-фильтры. В общем представлении фильтра, b/a, знаменатель, a, КИХ-фильтра является скаляром 1, который является вторым входом этой функции.

  • numerictype b может отличаться, чем numerictype x.

  • Если вы хотите задать начальные условия, но не знаете, что numerictype использовать, сначала попытайтесь фильтровать свои данные без начальных условий. Можно сделать так путем определения [] для входа zi. После выполнения операции фильтрации у вас есть numerictype y и zf (если требуется). Поскольку numerictype zi должен совпадать с numerictype y и zf, вы теперь знаете, что numerictype использует для начальных условий.

Алгоритмы

свернуть все

Функция filter использует Прямую Форму Транспонированная КИХ-реализация следующего разностного уравнения:

y(n)=b1*xn+b2*xn1+...+bL*xnN

где L является длиной фильтра, и N является порядком фильтра.

Следующая схема показывает, что прямая форма транспонировала КИХ-структуру фильтра, используемую функцией filter:

Правила Распространения fimath

Функция filter использует следующие правила относительно поведения fimath:

  • globalfimath повинуются.

  • Если какие-либо из входных параметров имеют присоединенный fimath, то он используется для промежуточных вычислений.

  • Если больше чем один вход имеет присоединенный fimath, то fimaths должен быть равным.

  • Вывод, y, всегда сопоставляется с fimath по умолчанию.

  • Если входной вектор, zi, имеет присоединенный fimath, то выходной вектор, zf, сохраняет этот fimath.

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

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

|

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