upsample函数 matlab,Upsample, aplique el filtro FIR y downsample

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

yout = upfirdn(xin,h,p,q)

especifica el factor de reducción de muestreo entero .q

Ejemplos

Convertir de tasa DAT a velocidad de muestreo de CD

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

f

DAT 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

88528c6fcdfbccb7cedf9cdc72167cf6.png

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,

(

f

DAT

/

2

)

×

min

(

1

/

L

,

1

/

M

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

3776416499d423b758157c05f0bd8bc5.png

Argumentos de entrada

xin — Señal de entrada

Vector | Matriz

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

h — Respuesta de impulso del filtro

Vector | Matriz

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

p — Factor de aumento de muestreo

1 (predeterminado) | entero positivo

Factor de muestreo ascendente, especificado por un entero positivo.

q — Factor de reducción de muestreo

1 (predeterminado) | entero positivo

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

Argumentos de salida

yout — Señal de salida

Vector | Matriz

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

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

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

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

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

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

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

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

Generación de código C/C++

Genere código C y C++ mediante MATLAB® Coder™.

Usage notes and limitations:

La generación de código C y C++ para aplicaciones de software requiere software.upfirdnDSP System Toolbox™

Los coeficientes de filtro, el factor de muestreo ascendente y el factor de reducción de muestreo deben ser constantes. Se permiten expresiones o variables si sus valores no cambian.

No se admiten entradas de tamaño variable.

Introducido antes de R2006a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值