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.

upfirdn

Upsample, aplique el filtro FIR y downsample

Descripción

yout = upfirdn(xin,h) filtra la señal de entrada con un filtro FIR con respuesta de impulso.xinh No se implementa ningún muestreo o reducción de muestreo con esta sintaxis.

yout = upfirdn(xin,h,p) especifica el factor de upsampling entero .p

ejemplo

yout = upfirdn(xin,h,p,q) especifica el factor de reducción de muestreo entero .q

Ejemplos

contraer todo

Cambie la frecuencia de muestreo de una señal por un factor de conversión racional de la velocidad DAT de 48 kHz a la frecuencia de muestreo de CD de 44,1 kHz. Utilice la función para encontrar el numerador y el denominador del factor racional.ratLM

Fdat = 48e3; Fcd = 44.1e3; [L,M] = rat(Fcd/Fdat)
L = 147 
M = 160 

Generar un sinusoides de 1,5 kHz muestreado en

<math display="inline">
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">f</mi>
</mrow>
<mrow>
<mi mathvariant="normal">DAT</mi>
</mrow>
</msub>
</mrow>
</math>
durante 0,25 segundos. Trazar el primer milisegundo de la señal.

t = 0:1/Fdat:0.25-1/Fdat; x = sin(2*pi*1.5e3*t); stem(t,x) xlim([0 0.001]) hold on

Diseñe un filtro de paso bajo antialiasing utilizando una ventana Kaiser. Establezca los bordes de la banda del filtro como 90% y 110% de la frecuencia de corte,

<math display="inline">
<mrow>
<mrow>
<mo>(</mo>
<mrow>
<mrow>
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">f</mi>
</mrow>
<mrow>
<mi mathvariant="normal">DAT</mi>
</mrow>
</msub>
</mrow>
<mo>/</mo>
<mrow>
<mn>2</mn>
</mrow>
</mrow>
</mrow>
<mo>)</mo>
</mrow>
<mo>×</mo>
<mi mathvariant="normal">min</mi>
<mrow>
<mo>(</mo>
<mrow>
<mrow>
<mrow>
<mn>1</mn>
</mrow>
<mo>/</mo>
<mrow>
<mi mathvariant="italic">L</mi>
</mrow>
</mrow>
<mo>,</mo>
<mrow>
<mrow>
<mn>1</mn>
</mrow>
<mo>/</mo>
<mrow>
<mi mathvariant="italic">M</mi>
</mrow>
</mrow>
</mrow>
<mo>)</mo>
</mrow>
</mrow>
</math>
. Especifique una ondulación de banda de paso de 5 dB y una atenuación de banda de parada de 40 dB. Establezca la ganancia de la banda de paso en .L

f = (Fdat/2)*min(1/L,1/M); d = designfilt('lowpassfir', ...     'PassbandFrequency',0.9*f,'StopbandFrequency',1.1*f, ...     'PassbandRipple',5,'StopbandAttenuation',40, ...     'DesignMethod','kaiserwin','SampleRate',48e3); h = L*tf(d);

Utilícelo con el filtro para remuestrear el sinusoides.upfirdnh Calcular y compensar el retraso introducido por el filtro. Genere el vector de tiempo remuestreado correspondiente.

y = upfirdn(x,h,L,M);  delay = floor(((filtord(d)-1)/2-(L-1))/L); y = y(delay+1:end); t_res = (0:(length(y)-1))/Fcd;

Superponga la señal remuestreada en la gráfica.

stem(t_res,y,'*') legend('Original','Resampled','Location','southeast') hold off

Argumentos de entrada

contraer todo

Señal de entrada, especificada por un vector o matriz. Si es un vector, entonces representa una sola señal.xin Si es una matriz, cada columna se filtra de forma independiente.xin

Filtrar la respuesta de impulso, especificada como vector o matriz. Si es un vector, entonces representa un filtro FIR.h Si es una matriz, cada columna es una secuencia de respuesta de impulso FIR independiente.h

Factor de muestreo ascendente, especificado por un entero positivo.

Factor de reducción de muestreo, especificado por un entero positivo.

Argumentos de salida

contraer todo

Señal de salida, especificada como vector o matriz. Si es un vector, entonces representa una señal.yout Si es una matriz, cada columna es una salida independiente.yout La longitud de la salida, es .youtceil(((length(xin)-1)*p+length(h))/q)

Nota

Puesto que realiza la convolución y el cambio de velocidad, las señales tienen una longitud diferente a .upfirdnyoutxin El número de filas de es aproximadamente veces el número de filas de .youtp/qxin

Sugerencias

Las combinaciones válidas de los tamaños de y son:xinh

  1. es un vector y es un vector.xinh

    Las entradas son un filtro y una señal, por lo que la función confunde con .xinh La señal de salida es un vector de fila si es un vector de fila; de lo contrario, es un vector de columna.youtxinyout

  2. es una matriz y es un vector.xinh

    Las entradas son un filtro y muchas señales, por lo que la función se corresponde con cada columna de .hxin El resultado es una matriz con el mismo número de columnas que .youtxin

  3. es un vector y es una matriz.xinh

    Las entradas son múltiples filtros y una señal, por lo que la función confunde cada columna de con .hxin El resultado es una matriz con el mismo número de columnas que .youth

  4. es una matriz y es una matriz, ambas con el mismo número de columnas.xinh

    Las entradas son múltiples filtros y múltiples señales, por lo que la función confunde las columnas correspondientes de y .xinh El resultado es una matriz con el mismo número de columnas que y .youtxinh

Algoritmos

utiliza una estructura de interpolación polifásica.upfirdn El número de operaciones de multiplicar y añadir en la estructura polifásica es aproximadamente (LhLx – Plx)/ dondeq Lh Y Lx son las longitudes de ( ) y ( ), respectivamente.hnxn

Un recuento de fracasos más preciso se calcula en el programa, pero el recuento exacto sigue siendo aproximado. Para señales largas ( ), la fórmula es a menudo exacta.xn

realiza una cascada de tres operaciones:upfirdn

  1. Subir la muestra de los datos de entrada en la matriz por un factor del entero (inserción de ceros)xinp

  2. Filtra los datos de señal amplificados con la secuencia de respuesta de impulso dada en el vector o matrizh

  3. Muestra descendente del resultado por un factor del entero (tirar muestras de distancia)q

El filtro FIR suele ser un filtro de paso bajo, que debe diseñar utilizando otra función como o .firpmfir1

Nota

La función realiza un diseño FIR utilizando , seguido de la modificación de velocidad implementada con .resamplefirlsupfirdn

Referencias

[1] Crochiere, R. E., and Lawrence R. Rabiner. Multirate Digital Signal Processing. Englewood Cliffs, NJ: Prentice-Hall, 1983, pp. 88–91.

[2] Crochiere, R. E. “A General Program to Perform Sampling Rate Conversion of Data by Rational Ratios.” Programs for Digital Signal Processing (Digital Signal Processing Committee of the IEEE Acoustics, Speech, and Signal Processing Society, eds.). New York: IEEE Press, 1979, Programs 8.2-1–8.2-7.

Capacidades ampliadas

Consulte también

| | | | | | |

Introducido antes de R2006a