islinphase

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

Синтаксис

flag = islinphase(b,a)
flag = islinphase(sos)
flag = islinphase(d)
flag = islinphase(...,tol)
flag = islinphase(hs,...)
flag = islinphase(hs,'Arithmetic',arithtype)

Описание

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

flag = islinphase(sos) возвращает true, если фильтр, заданный матрицей разделов второго порядка, sos, имеет линейную фазу. sos является K-by-6 матрица, где количество разделов, K, должно быть больше, чем или равным 2. Каждая строка sos соответствует коэффициентам второго порядка (biquad) фильтр. i th строка матрицы 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).

flag = islinphase(hs,...) определяет, имеет ли Система фильтра object™, hs, линейную фазу. У вас должен быть DSP System Toolbox™, чтобы использовать islinphase с Системным объектом.

flag = islinphase(hs,'Arithmetic',arithtype) анализирует Системный объект фильтра hs на основе заданного arithtype. arithtype может быть одним из 'double', 'single' или 'fixed'. Когда вы задаете 'double' или 'single', функция выполняет дважды - или анализ с одинарной точностью. Когда вы задаете 'fixed', арифметические изменения в зависимости от установки свойства CoefficientDataType и заблокирован ли Системный объект или разблокирован. У вас должен быть DSP System Toolbox, чтобы использовать islinphase с Системным объектом.

 Детали для вычислений с фиксированной точкой

Когда вы не задаете арифметику для non-CIC структур, функция использует арифметику с двойной точностью, если Системный объект фильтра находится в разблокированном состоянии. Если Системный объект заблокирован, функция выполняет анализ на основе заблокированного типа входных данных. Структуры CIC только поддерживают вычисления с фиксированной точкой.

Примеры

свернуть все

Используйте метод окна, чтобы разработать десятый порядок lowpass КИХ-фильтр с нормированной частотой среза 0.55. Проверьте, что фильтр имеет линейную фазу.

firSpecs = fdesign.lowpass('N,Fc',10,0.55);
lpFIR = design(firSpecs,'window','SystemObject',true);

flag = islinphase(lpFIR)
flag = logical
   1

[phs,w] = phasez(lpFIR);

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

БИХ-фильтры в целом не имеют линейной фазы. Проверьте оператор путем построения восьмого порядка Баттерворт, Чебышев, и эллиптические фильтры с подобными спецификациями.

ord = 4;

Wp = 0.35;
Wst = 0.4;
atten = 20;
rippl = 1;

buttSpecs = fdesign.lowpass('Fp,Fst,Ap,Ast',Wp,Wst,rippl,atten);
buttIIR = design(buttSpecs,'butter','SystemObject',true);

chb1Specs = fdesign.lowpass('Fp,Fst,Ap,Ast',Wp,Wst,rippl,atten);
chb1IIR = design(chb1Specs,'cheby1','SystemObject',true);

chb2Specs = fdesign.lowpass('Fp,Fst,Ap,Ast',Wp,Wst,rippl,atten);
chb2IIR = design(chb2Specs,'cheby2','SystemObject',true);

ellpSpecs = fdesign.lowpass('Fp,Fst,Ap,Ast',Wp,Wst,rippl,atten);
ellpIIR = design(ellpSpecs,'ellip','SystemObject',true);

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

fv = fvtool(buttIIR,chb1IIR,chb2IIR,ellpIIR,'Analysis','phase');
legend(fv,'Butterworth','Chebyshev I','Chebyshev II','Elliptic')

phs = [islinphase(buttIIR) islinphase(chb1IIR) ...
       islinphase(chb2IIR) islinphase(ellpIIR)]
phs = 1x4 logical array

   0   0   0   0

Смотрите также

| | | | |

Введенный в R2013a