Main Content

pulstran

Descripción

ejemplo

y = pulstran(t,d,func) genera un tren de pulsos basado en muestras de una función continua, func.

ejemplo

y = pulstran(t,d,func,fs) usa una tasa de muestreo de fs.

ejemplo

y = pulstran(t,d,p) genera un tren de pulsos que es la suma de varias interpolaciones retrasadas del pulso prototipo en el vector p.

ejemplo

y = pulstran(___,intfunc) especifica métodos de interpolación alternativos. Consulte interp1 para ver una lista de métodos disponibles. Puede utilizar este parámetro con cualquiera de las sintaxis de entrada anteriores.

Ejemplos

contraer todo

Este ejemplo genera un tren de pulsos mediante el pulso rectangular predeterminado de ancho unitario. La frecuencia de repetición es 0.5 kHz, la longitud de señal es 60 s y la tasa de muestreo es 1 kHz. El factor de ganancia es una sinusoide de frecuencia 0.05 Hz.

t = 0:1/1e3:60;
d = [0:2:60;sin(2*pi*0.05*(0:2:60))]';
x = @rectpuls;
y = pulstran(t,d,x);

plot(t,y)
hold off
xlabel('Time (s)')
ylabel('Waveform')

Figure contains an axes object. The axes object contains an object of type line.

Este ejemplo genera una forma de onda de sierra asimétrica con una frecuencia de repetición de 3 Hz. La sierra tiene un ancho de 0.2 s y un factor de desviación de –1. La longitud de señal es 1 s y la tasa de muestreo es 1 kHz. Represente el tren de pulsos.

fs = 1e3;
t = 0:1/1e3:1;
d = 0:1/3:1;   
x = tripuls(t,0.2,-1);
y = pulstran(t,d,x,fs);

plot(t,y)
hold off
xlabel('Time (s)')
ylabel('Waveform')

Figure contains an axes object. The axes object contains an object of type line.

Represente un pulso de RF gaussiano de 10 kHz con un ancho de banda del 50%, muestreado a una tasa de 10 MHz. Trunque el pulso en el que la envolvente está 40 dB por debajo del pico.

fs = 1e7;
tc = gauspuls('cutoff',10e3,0.5,[],-40); 
t = -tc:1/fs:tc; 
x = gauspuls(t,10e3,0.5); 

plot(t,x)
xlabel('Time (s)')
ylabel('Waveform')

Figure contains an axes object. The axes object contains an object of type line.

La frecuencia de repetición de pulsos es 1 kHz, la tasa de muestreo es 50 kHz y la longitud del tren de pulsos es 25 ms. El factor de ganancia es una sinusoide de frecuencia 0.1 Hz.

ts = 0:1/50e3:0.025;
d = [0:1/1e3:0.025;sin(2*pi*0.1*(0:25))]';
y = pulstran(ts,d,x,fs);

Represente el tren de pulsos gaussiano periódico.

plot(ts,y)
xlim([0 0.01])
xlabel('Time (s)')
ylabel('Waveform')

Figure contains an axes object. The axes object contains an object of type line.

Escriba una función que genere pulsos personalizados consistentes en una sinusoide con amortiguamiento por una exponencial. El pulso es una función impar de tiempo. La función de generación cuenta con un segundo argumento de entrada que especifica un solo valor para la frecuencia de sinusoide y el factor de amortiguamiento. Visualice un pulso generado, muestreado a 1 kHz durante 1 segundo, con valores de frecuencia y amortiguamiento iguales a 30.

fnx = @(x,fn) sin(2*pi*fn*x).*exp(-fn*abs(x));

ffs = 1000;
tp = 0:1/ffs:1;

pp = fnx(tp,30);

plot(tp,pp)
xlabel('Time (s)')
ylabel('Waveform')

Figure contains an axes object. The axes object contains an object of type line.

Utilice la función pulstran para generar un tren de pulsos personalizados. El tren se muestrea a 2 kHz durante 1.2 segundos. Los pulsos tienen lugar cada tercio de segundo y tienen amplitudes que decrecen exponencialmente.

Especifique inicialmente el pulso generado como un prototipo. Incluya la tasa de muestreo del prototipo en la llamada a la función. En este caso, pulstran replica los pulsos en las ubicaciones especificadas.

fs = 2e3;
t = 0:1/fs:1.2;

d = 0:1/3:1;
dd = [d;4.^-d]';

z = pulstran(t,dd,pp,ffs);

plot(t,z)
xlabel('Time (s)')
ylabel('Waveform')

Figure contains an axes object. The axes object contains an object of type line.

Genere el tren de pulsos de nuevo, pero ahora utilice la función de generación como argumento de entrada. Incluya los parámetros de frecuencia y amortiguamiento en la llamada a la función. En este caso, pulstran genera el pulso para que se centre alrededor de cero.

y = pulstran(t,dd,fnx,30);

plot(t,y)
xlabel('Time (s)')
ylabel('Waveform')

Figure contains an axes object. The axes object contains an object of type line.

Escriba una función que genera una forma de onda de sierra personalizada y exponencialmente decreciente con una frecuencia de 0.25 Hz. La función de generación cuenta con un segundo argumento de entrada que especifica un solo valor para la frecuencia de sierra y el factor de amortiguamiento. Visualice un pulso generado, muestreado a 0.1 kHz durante 1 segundo, con valores de frecuencia y amortiguamiento igual a 50.

fnx = @(x,fn) sawtooth(2*pi*fn*0.25*x).*exp(-2*fn*x.^2);

fs = 100;
t = 0:1/fs:1;

pp = fnx(t,50);

plot(t,pp)

Figure contains an axes object. The axes object contains an object of type line.

Utilice la función pulstran para generar un tren de pulsos personalizados. El tren se muestrea a 0.1 kHz durante 125 segundos. Los pulsos tienen lugar cada 25 segundos y tienen amplitudes que decrecen exponencialmente.

Especifique el pulso generado como un prototipo. Genere tres trenes de pulsos mediante el método de interpolación lineal predeterminado, la interpolación del vecino más cercano y la interpolación cúbica a trozos. Compare los trenes de pulsos en una única gráfica.

d = [0:25:125; exp(-0.015*(0:25:125))]';
ffs = 100;
tp = 0:1/ffs:125;

r = pulstran(tp,d,pp);
y = pulstran(tp,d,pp,'nearest');
q = pulstran(tp,d,pp,'pchip');


plot(tp,r)
hold on
plot(tp,y)
plot(tp,q)
xlim([0 125])
legend('Linear interpolation','Nearest neighbor interpolation','Piecewise cubic interpolation')
hold off

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Linear interpolation, Nearest neighbor interpolation, Piecewise cubic interpolation.

Argumentos de entrada

contraer todo

Valores de tiempo en los que se evalúa func, especificados como vector.

Desplazamiento eliminado de los valores del arreglo t, especificado como vector real. Puede aplicar un factor de ganancia opcional a cada evaluación con retardo especificando d como una matriz de dos columnas, con el desplazamiento definido en la columna 1 y la ganancia asociada en la columna 2. Si especifica d como vector fila, los valores se interpretan solo como retardos.

Función continua utilizada para generar un tren de pulsos basado en sus muestras, especificada como 'rectpuls', 'gauspuls', 'tripuls' o un identificador de función.

Si utiliza func como un identificador de función, puede pasar los parámetros de la función de la siguiente forma:

y = pulstran(t,d,'gauspuls',10e3,0.5); 

Esto crea un tren de pulsos utilizando un pulso gaussiano de 10 kHz con un ancho de banda del 50%.

Función prototipo, especificada como vector. El intervalo de p viene dado por [0,(length(p)-1)/fs] y sus muestras son idénticas a cero fuera de este intervalo. De forma predeterminada, la interpolación lineal se utiliza para generar retardos.

Tasa de muestreo en Hz, especificada como escalar real.

Método de interpolación, especificado como una de las opciones de esta tabla.

Método

Descripción

Continuidad

Comentarios

'linear'

Interpolación lineal. El valor interpolado en un punto de consulta se basa en una interpolación lineal de los valores en puntos vecinos de la malla en cada una de las dimensiones respectivas. Este es el método de interpolación predeterminado.

C0

  • Requiere al menos dos puntos

  • Requiere más memoria y tiempo de cálculo que el vecino más cercano

'nearest'

Interpolación del vecino más cercano. El valor interpolado en un punto de consulta es el valor en el punto de malla de muestra más cercano.

Discontinuo

  • Requiere al menos dos puntos

  • Requisitos de memoria modestos

  • Tiempo de cálculo más rápido

'next'

Interpolación del siguiente vecino. El valor interpolado en un punto de consulta es el valor en el siguiente punto de malla de muestra.

Discontinuo

  • Requiere al menos dos puntos

  • Requisitos de memoria y tiempo de cálculo similares a 'nearest'

'previous'

Interpolación del vecino previo. El valor interpolado en un punto de consulta es el valor en el punto de malla de muestra previo.

Discontinuo

  • Requiere al menos dos puntos

  • Requisitos de memoria y tiempo de cálculo similares a 'nearest'

'pchip' o 'cubic'

Interpolación cúbica a trozos que conserva la forma. El valor interpolado en un punto de consulta se basa en una interpolación cúbica a trozos que conserva la forma de los valores en puntos vecinos de la malla.

C1

  • Requiere al menos 4 puntos

  • Requiere más memoria y tiempo de cálculo que 'linear'

'v5cubic'

Convolución cúbica usada en MATLAB® 5.

C1

Los puntos deben estar espaciados uniformemente.

'makima'

Interpolación de Hermite cúbica de Akima modificada. El valor interpolado en un punto de consulta se basa en una función a trozos de polinomios con un grado máximo de tres. La fórmula de Akima se modifica para evitar rebasamientos.

C1

  • Requiere al menos dos puntos

  • Produce menos ondulaciones que 'spline', pero no aplana de forma tan agresiva como 'pchip'

  • El cálculo es más costoso que 'pchip', pero típicamente menos que 'spline'

  • Los requisitos de memoria son similares a los de 'spline'

'spline'

Interpolación por splines que utiliza condiciones finales not-a-knot. El valor interpolado en un punto de consulta se basa en una interpolación cúbica de los valores en puntos vecinos de la malla en cada una de las dimensiones respectivas.

C2

  • Requiere al menos 4 puntos

  • Requiere más memoria y tiempo de cálculo que 'pchip'

Argumentos de salida

contraer todo

Tren de pulsos generado por la función, devuelto como un vector.

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a

Consulte también

| | | | | | | | |