Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

islinphase

Determinar si el filtro tiene fase lineal

Sintaxis

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

Descripción

flag = islinphase(b,a) devuelve una salida lógica, , igual a si los coeficientes de filtro en y definir un filtro de fase lineal. es igual a si el filtro no tiene fase lineal.flagtruebaflagfalse

flag = islinphase(sos) devuelve si el filtro especificado por la matriz de secciones de segundo orden, , tiene fase lineal. es una matriz -by-6, donde el número de secciones, , debe ser mayor o igual que 2.truesossosKK Cada fila de corresponde a los coeficientes de un filtro de segundo orden (biquad).sos La ta fila de la matriz corresponde a .isos[bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)]

flag = islinphase(d) devuelve si el filtro digital, , tiene fase lineal.trued Se utiliza para generar en función de las especificaciones de respuesta de frecuencia.designfiltd

flag = islinphase(...,tol) utiliza la tolerancia, , para determinar cuándo dos números están lo suficientemente cerca como para ser considerados iguales.tol Si no se especifica, , tiene como valor predeterminado .toleps^(2/3)

 Detalles de la aritmética de punto fijo

flag = islinphase(h) determina si el objeto de filtro tiene fase lineal.dfilth

Ejemplos

contraer todo

Utilice el método de ventana para diseñar un filtro FIR de paso bajo de décimo orden con frecuencia de corte normalizada 0,55. Compruebe que el filtro tiene fase lineal.

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')

Los filtros IIR en general no tienen fase lineal. Verifique la instrucción construyendo filtros Butterworth, Chebyshev y elípticos de octavo orden con especificaciones similares.

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);

Trazar las respuestas de fase de los filtros. Determine si tienen fase lineal.

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

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

   0   0   0   0

Introducido en R2013a