isminphase

Определите, является ли фильтр минимальной фазой

Синтаксис

flag = isminphase(b,a)
flag = isminphase(sos)
flag = isminphase(d)
flag = isminphase(...,tol)

Описание

flag = isminphase(b,a) возвращает логический выход, flag, равный true если фильтр задан коэффициентами числителя, b, и коэффициенты знаменателя, a, является минимальным фильтром фазы.

flag = isminphase(sos) возвращает true если фильтр задан матрицей разделов второго порядка, sos, является минимальной фазой. sos является матрицей K -by-6, где количество сечений, K, должно быть больше или равно 2. Каждая строка sos соответствует коэффициентам фильтра второго порядка (biquad). i строка sos матрица соответствует [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)].

flag = isminphase(d) возвращает true если цифровой фильтр, d, имеет минимальную фазу. Использовать designfilt чтобы сгенерировать d на основе спецификаций частотной характеристики.

flag = isminphase(...,tol) использует допуск, tol, чтобы определить, когда два числа достаточно близки, чтобы считаться равными. Если не указано, tol, по умолчанию является eps^(2/3).

Примеры

свернуть все

Создайте lowpass Butterworth БИХ шестого порядка с использованием разделов второго порядка. Задайте нормированную частоту 3-dB 0,15. Проверьте, имеет ли фильтр минимальную фазу.

[z,p,k] = butter(6,0.15);
SOS = zp2sos(z,p,k);            
min_flag = isminphase(SOS)
min_flag = logical
   1

Перепроектируйте фильтр с помощью designfilt. Проверяйте, что нули и полюса передаточной функции включены или находятся внутри модуля круга.

d = designfilt('lowpassiir','DesignMethod','butter','FilterOrder',6, ...
               'HalfPowerFrequency',0.25);
d_flag = isminphase(d)
d_flag = logical
   1

zplane(d)

Figure Filter Visualization Tool - Pole-Zero Plot contains an axes and other objects of type uitoolbar, uimenu. The axes with title Pole-Zero Plot contains 4 objects of type line, text.

Учитывая фильтр, заданный набором коэффициентов числителя с одной точностью и знаменателя, проверьте, имеет ли он минимальную фазу для различных значений допуска.

b = single([1 1.00001]);  
a = single([1 0.45]);               
min_flag1 = isminphase(b,a)        
min_flag1 = logical
   0

min_flag2 = isminphase(b,a,1e-3)
min_flag2 = logical
   1

Введенный в R2013a