islinphase

Определите, имеет ли фильтр линейную фазу

Синтаксис

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

Описание

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

flag = islinphase(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 = islinphase(d) возвращает true если цифровой фильтр, d, имеет линейную фазу. Использовать designfilt чтобы сгенерировать d на основе спецификаций частотной характеристики.

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

Примеры

свернуть все

Используйте оконный метод для разработки lowpass конечной импульсной характеристики десятого порядка с нормализованной частотой среза 0,55. Проверьте, что фильтр имеет линейную фазу.

d = designfilt('lowpassfir','DesignMethod','window', ...
    'FilterOrder',10,'CutoffFrequency',0.55);
flag = islinphase(d)
flag = logical
   1

[phs,w] = phasez(d);

plot(w/pi,phs)
xlabel('Frequency \omega/\pi')
ylabel('Phase')

Figure contains an axes. The axes contains an object of type line.

БИХ в целом не имеют линейной фазы. Проверьте оператор, создав фильтры Butterworth, Chebyshev и elliptic восьмого порядка с аналогичными спецификациями.

ord = 8;
Wcut = 0.35;
atten = 20;
rippl = 1;

[zb,pb,kb] = butter(ord,Wcut);
sosb = zp2sos(zb,pb,kb);

[zc,pc,kc] = cheby1(ord,rippl,Wcut);
sosc = zp2sos(zc,pc,kc);

[zd,pd,kd] = cheby2(ord,atten,Wcut);
sosd = zp2sos(zd,pd,kd);

[ze,pe,ke] = ellip(ord,rippl,atten,Wcut);
sose = zp2sos(ze,pe,ke);

Постройте график фазовых откликов фильтров. Определите, имеют ли они линейную фазу.

fv = fvtool(sosb,sosc,sosd,sose,'Analysis','phase');
legend(fv,'Butterworth','Chebyshev I','Chebyshev II','Elliptic')

Figure Filter Visualization Tool - Phase Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Phase Response contains 4 objects of type line. These objects represent Butterworth, Chebyshev I, Chebyshev II, Elliptic.

phs = [islinphase(sosb) islinphase(sosc) ...
       islinphase(sosd) islinphase(sose)]
phs = 1x4 logical array

   0   0   0   0

Введенный в R2013a