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 Con esta sintaxis no se implementa ningún aumento de muestreo ni disminución de resolución.

yout = upfirdn(xin,h,p) especifica el factor de aumento de muestreo de enteros.p

ejemplo

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

Ejemplos

contraer todo

Cambie la frecuencia de muestreo de una señal por un factor de conversión racional de la velocidad de 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 

Genere una sinusoide de 1,5 kHz muestreada 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. Trace 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ña un filtro de paso bajo de antialiasing usando una ventana de Kaiser. Establezca los bordes de la banda de 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. Establece la ganancia de la banda de paso.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);

Utilice con el filtro para volver a muestrear la sinusoide.upfirdnh Calcule y compense el retardo 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;

Superponer 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

Filtre 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 de FIR independiente.h

Factor de aumento de muestreo, especificado por un entero positivo.

Factor de muestreo descendente, 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

Dado que realiza la convolución y el cambio de velocidad, las señales tienen una longitud diferente que.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 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 convoluciona 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 convoluciona 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 convoluciona 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 convoluciona 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ása.upfirdn El número de operaciones de multiplicación-adición en la estructura polifála es aproximadamente (LhLx – Plx)/dondeq Lh Y Lx son las longitudes de () y (), respectivamente.hnxn

En el programa se calcula un conteo de flops más preciso, pero el conteo exacto sigue siendo aproximado. Para las señales largas (), la fórmula es a menudo exacta.xn

realiza una cascada de tres operaciones:upfirdn

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

  2. FIR filtra los datos de señal de la muestra con la secuencia de respuesta de impulso dada en el vector o matrizh

  3. Downsample el resultado por un factor del entero (tirar muestras)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 cambio de tasa implementado 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