exponenta event banner

фильтр

Одномерный цифровой фильтр 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. Функция возвращает отфильтрованные данные в выходных данных fi объект y. Исходные данные 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')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Unfiltered signal, Filtered signal.

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

Подробнее

свернуть все

Длина фильтра (L)

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

Порядок фильтрации (N)

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

Совет

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

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

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

Алгоритмы

свернуть все

filter функция использует реализацию прямой транспонированной FIR формы следующего уравнения разности:

y (n) = b1 * xn + b2 * xn 1 +... + bL * xn − N

где L - длина фильтра и N - порядок фильтрации.

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

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

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

  • globalfimath подчиняется.

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

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

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

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

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

.

См. также

|

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