exponenta event banner

idfilt

Фильтрация данных с помощью пользовательских полос пропускания, общих фильтров или фильтров Butterworth

Синтаксис

Zf = idfilt(Z,filter)
Zf = idfilt(Z,filter,causality)
Zf = idfilt(Z,filter,'FilterOrder',NF)

Описание

Zf = idfilt(Z,filter) фильтрует данные, используя пользовательские полосы пропускания, общие фильтры или фильтры Butterworth. Z - данные, определенные как iddata объект. Zf содержит отфильтрованные данные в качестве iddata объект. Фильтр можно определить тремя способами:

  • Как явная система, определяющая фильтр.

    filter = idm or filter = {num,den} or filter = {A,B,C,D}
    

    idm может быть любой линейной моделью, идентифицированной SISO, или объектом модели LTI. В качестве альтернативы фильтр может быть определен как массив ячеек. {A,B,C,D} матриц состояния-пространства SISO или в виде массива ячеек {num,den} коэффициентов фильтра числителя/знаменателя.

  • Как вектор или матрица, определяющая одну или несколько полос пропускания.

    filter=[[wp1l,wp1h];[ wp2l,wp2h]; ....;[wpnl,wpnh]]
    

    Матрица: n-by-2, где каждая строка определяет полосу пропускания. Создается фильтр, который дает объединение этих полос пропускания. Для данных временной области они вычисляются как каскадные фильтры Баттерворта или порядок NF. Значение NF по умолчанию: 5.

    • Для данных временной области - Полосы пропускания в единицах rad/TimeUnit, где TimeUnit - временные единицы оценочных данных.

    • Для данных в частотной области - Полосы пропускания находятся в частотных единицах (FrequencyUnit свойство) оценочных данных.

    Например, чтобы определить полосу останова между ws1 и ws2, использовать

    filter = [0 ws1; ws2,Nyqf]
    

    где Nyqf - частота Найквиста.

  • Для данных частотной области может быть указана только частотная характеристика фильтра.

    filter = Wf
    

    Здесь Wf является вектором возможных комплексных значений, которые определяют частотную характеристику фильтра, так что входы и выходы на частоте Z.Frequency(kf) умножаются на Wf(kf). Wf - вектор столбца длиной = количеством частот в Z. Если объект данных имеет несколько экспериментов, Wf - клеточный массив длиной = # экспериментов в Z.

Zf = idfilt(Z,filter,causality) указывает причинно-следственную связь. Для данных временной области фильтрация выполняется во временной области как причинная фильтрация по умолчанию. Это соответствует последнему аргументу causality = 'causal'. С causality = 'noncausal', для фильтрации используется некаузальный фильтр нулевой фазы (соответствующий filtfilt в документе Обработка сигналов Toolbox™ продукт).

Для данных в частотной области сигналы умножаются на частотную характеристику фильтра. С фильтрами, определенными как полоса пропускания, это дает идеальную нулевую фильтрацию («фильтры кирпичной стены»). Частоты, которым фильтр присвоил нулевой вес (за пределами полосы пропускания или через частотный отклик), удаляются из iddata объект Zf.

Zf = idfilt(Z,filter,'FilterOrder',NF) определяет порядок фильтрации. Фильтры временной области в случае полосы пропускания вычисляются как каскадные фильтры полосы пропускания и полосы останова Баттерворта. Порядки этих фильтров по умолчанию равны 5, что может быть изменено на произвольное целое число NF.

Обычно при идентификации выбирают полосу частот, в которой концентрируется соответствие между моделью и данными. Часто это соответствует полосовой фильтрации с полосой пропускания над интересными точками останова на диаграмме Боде. Для идентификации, где также оценивается модель возмущения, лучше достичь желаемого результата оценки, используя 'WeightingFilter' параметр команды оценки, чем просто предварительная фильтрация данных. Значения для 'WeightingFilter' совпадают с аргументом filter в idfilt.

Алгоритмы

Фильтр Баттерворта такой же, как butter в инструментарии обработки сигналов. Кроме того, фильтр с нулевой фазой эквивалентен filtfilt в этой панели инструментов.

Ссылки

Ljung (1999), глава 14.

См. также

|

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