Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Análisis del filtro utilizando FVTool

Este ejemplo muestra cómo usar varias funciones de análisis del filtro en una ventana de figura única utilizando Filter Visualization Tool (FVTool), una interfaz de usuario gráfica disponible en Signal Processing Toolbox™.

FVTool también tiene una interfaz de programación de aplicaciones (API) que permite interactuar con la interfaz gráfica desde la línea de comandos. Esto permite integrar FVTool en otras aplicaciones.

Iniciar FVTool

Vamos a crear un filtro paso bajo con una frecuencia de la banda de paso de 0,4π rad/muestra, una frecuencia de la banda de parada de 0,6π rad/muestra, una ondulación de la banda de paso de 1 dB y una atenuación de la banda de parada de 80 dB. Diseñamos los filtros utilizando algunas de las herramientas de diseño de filtros de Signal Processing Toolbox y, después, analizamos los resultados en FVTool.

Diseñe un filtro FIR equiripple paso bajo.

Df1 = designfilt("lowpassfir",PassbandFrequency=0.4,...
                              StopbandFrequency=0.6,...
                              PassbandRipple=1,...
                              StopbandAttenuation=80,...
                              DesignMethod="equiripple");

Diseñe un filtro IIR elíptico paso bajo.

Df2 = designfilt("lowpassiir",PassbandFrequency=0.4,...
                              StopbandFrequency=0.6,...
                              PassbandRipple=1,...
                              StopbandAttenuation=80,...
                              DesignMethod="ellip");

Inicie FVTool con los objetos de filtro y devuelva un identificador a FVTool que nos permita reutilizar la misma figura de FVTool.

hfvt = fvtool(Df1,Df2);

Figure Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude (dB) contains 2 objects of type line.

Añadir y eliminar filtros

Podemos observar que ambos filtros cumplen las especificaciones de diseño, pero también deseamos ver lo bien que funciona el diseño Chebyshev Tipo II.

Puede añadir un filtro a FVTool utilizando la función addfilter.

Df3 = designfilt("lowpassiir",PassbandFrequency=0.4,...
                              StopbandFrequency=0.6,...
                              PassbandRipple=1,...
                              StopbandAttenuation=80,...
                              DesignMethod="cheby2");
addfilter(hfvt,Df3);

Figure Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude (dB) contains 3 objects of type line.

Para identificar qué línea de la gráfica pertenece a qué filtro, puede añadir una leyenda utilizando la función legend del identificador de FVTool.

legend(hfvt,"Equiripple","Elliptic","Chebyshev Type II");

Figure Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude (dB) contains 3 objects of type line. These objects represent Equiripple, Elliptic, Chebyshev Type II.

Puede eliminar un filtro de FVTool utilizando la función deletefilter y pasando el índice de los filtros que desea eliminar.

deletefilter(hfvt,[1 3]);

Figure Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude (dB) contains an object of type line. This object represents Elliptic.

Cambiar parámetros de análisis

El identificador que devuelve FVTool contiene propiedades que permiten interactuar tanto con el filtro como con el análisis actual. Para ver todas las propiedades disponibles, utilice el comando get. Visualice las últimas catorce propiedades que son específicas de FVTool.

s = get(hfvt);

Figure Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude (dB) contains an object of type line. This object represents Elliptic.

% Keep the last 14 properties
c = struct2cell(s);
f = fieldnames(s);
s = cell2struct(c(end-14:end),f(end-14:end),1)
s = struct with fields:
       SelectionHighlight: on
                      Tag: 'filtervisualizationtool'
                 UserData: []
                  Visible: on
           NumberofPoints: 8192
    NormalizeMagnitudeto1: 'off'
         MagnitudeDisplay: 'Magnitude (dB)'
        OverlayedAnalysis: ''
            PolyphaseView: 'off'
                 Analysis: 'magnitude'
            ShowReference: 'on'
           FrequencyRange: '[0, pi)'
      NormalizedFrequency: 'on'
           FrequencyScale: 'Linear'
          FrequencyVector: [0 0.0039 0.0078 0.0118 0.0157 0.0196 0.0235 0.0275 0.0314 0.0353 0.0392 0.0431 0.0471 0.0510 0.0549 0.0588 0.0627 0.0667 0.0706 0.0745 0.0784 0.0824 0.0863 0.0902 0.0941 0.0980 0.1020 0.1059 0.1098 0.1137 ... ] (1x256 double)

Todos los parámetros que están disponibles del diálogo FVTool Analysis Parameters también están disponibles como propiedades del objeto de FVTool. El comando set con solo dos argumentos de entrada devuelve todos los valores posibles.

set(hfvt,"MagnitudeDisplay")
ans = 1x4 cell
    {'Magnitude'}    {'Magnitude (dB)'}    {'Magnitude squared'}    {'Zero-phase'}

Pase la visualización a Magnitude Squared.

hfvt.MagnitudeDisplay = "Magnitude Squared";

Figure Figure 1: Magnitude Response (squared) contains an axes object. The axes object with title Magnitude Response (squared), xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude squared contains an object of type line. This object represents Elliptic.

Obtenga todos los valores posibles para la propiedad Analysis.

set(hfvt,"Analysis")
ans = 1x12 cell
    {'magnitude'}    {'phase'}    {'freq'}    {'grpdelay'}    {'phasedelay'}    {'impulse'}    {'step'}    {'polezero'}    {'coefficients'}    {'info'}    {'magestimate'}    {'noisepower'}

Ahora, cambie el análisis para ver la respuesta de retardo de grupo del filtro. Visualice las unidades predeterminadas.

hfvt.Analysis = "grpdelay";

Figure Figure 1: Group delay contains an axes object. The axes object with title Group delay, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Group delay (in samples) contains an object of type line. This object represents Elliptic.

GroupDelayUnits = hfvt.GroupDelayUnits
GroupDelayUnits = 
'Samples'

Superponer dos análisis

También queremos ver cómo se solapan el retardo de grupo y la respuesta de magnitud en el dominio de frecuencia.

Puede superponer dos análisis cualesquiera en FVTool que compartan un eje x común (tiempo o frecuencia) ajustando la propiedad OverlayedAnalysis.

set(hfvt,OverlayedAnalysis="magnitude",Legend="On")

Figure Figure 1: Group delay and Magnitude Response (dB) contains an axes object. The axes object with title Group delay and Magnitude Response (dB), xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Group delay (in samples) contains an object of type line. This object represents Elliptic: Group delay.

Para desactivar el análisis superpuesto, establezca la propiedad OverlayedAnalysis en ''.

hfvt.OverlayedAnalysis = '';

Figure Figure 1: Group delay contains an axes object. The axes object with title Group delay, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Group delay (in samples) contains an object of type line. This object represents Elliptic.

Puede cerrar la figura de FVTool llamando a la función close en el identificador de FVTool.

close(hfvt)

Consulte también

|