idfilt

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

Синтаксис

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

Описание

Zf = idfilt(Z,filter) фильтрует данные с помощью пользовательских полос пропускания, общих фильтров или фильтров Баттерворта. 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 в продукте Signal Processing Toolbox™ обработка сигналов).

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

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

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

Алгоритмы

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

Ссылки

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

См. также

|

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