Main Content

Generar y visualizar señales

Este ejemplo muestra cómo generar formas de onda periódicas y aperiódicas, sinusoides de frecuencia de barrido y trenes de pulsos ampliamente utilizados empleando funciones disponibles en Signal Processing Toolbox™.

Formas de onda periódicas

Además de las funciones sin y cos de MATLAB®, Signal Processing Toolbox™ ofrece otras funciones, como sawtooth y square, que producen señales periódicas.

La función sawtooth genera una onda de sierra con picos en ±1 y un periodo de 2π. Un parámetro opcional de anchura especifica un múltiplo fraccional de 2π en el que se produce el máximo de la señal.

La función square genera una onda cuadrada con un periodo de 2π. Un parámetro opcional especifica el ciclo de trabajo y el porcentaje del periodo durante el cual la señal es positiva.

Genere 1,5 segundos de una onda de sierra de 50 Hz con una tasa de muestreo de 10 kHz. Repita el cálculo para una onda cuadrada.

fs = 10000;
t = 0:1/fs:1.5;
x1 = sawtooth(2*pi*50*t);
x2 = square(2*pi*50*t);

subplot(2,1,1)
plot(t,x1)
axis([0 0.2 -1.2 1.2])
xlabel('Time (sec)')
ylabel('Amplitude') 
title('Sawtooth Periodic Wave')

subplot(2,1,2)
plot(t,x2)
axis([0 0.2 -1.2 1.2])
xlabel('Time (sec)')
ylabel('Amplitude')
title('Square Periodic Wave')

Figure contains 2 axes objects. Axes object 1 with title Sawtooth Periodic Wave contains an object of type line. Axes object 2 with title Square Periodic Wave contains an object of type line.

Formas de onda aperiódicas

Para generar pulsos triangulares, rectangulares y gaussianos, la toolbox ofrece las funciones tripuls, rectpuls y gauspuls.

La función tripuls genera un pulso triangular muestreado, aperiódico, de altura de unidad centrado en t = 0 y con un ancho predeterminado de 1.

La función rectpuls genera un pulso rectangular muestreado, aperiódico, de altura de unidad centrado en t = 0 y con un ancho predeterminado de 1. El intervalo de amplitud sin ceros se define como abierto en la derecha: rectpuls(-0.5) = 1 mientras rectpuls(0.5) = 0.

Genere 2 segundos de un pulso triangular con una tasa de muestreo de 10 kHz y un ancho de 20 ms. Repita el cálculo para un pulso rectangular.

fs = 10000;
t = -1:1/fs:1;
x1 = tripuls(t,20e-3);
x2 = rectpuls(t,20e-3);

figure
subplot(2,1,1)
plot(t,x1)
axis([-0.1 0.1 -0.2 1.2])
xlabel('Time (sec)')
ylabel('Amplitude')
title('Triangular Aperiodic Pulse')

subplot(2,1,2)
plot(t,x2)
axis([-0.1 0.1 -0.2 1.2])
xlabel('Time (sec)')
ylabel('Amplitude')
title('Rectangular Aperiodic Pulse')

Figure contains 2 axes objects. Axes object 1 with title Triangular Aperiodic Pulse contains an object of type line. Axes object 2 with title Rectangular Aperiodic Pulse contains an object of type line.

La función gauspuls genera un pulso sinusoidal con modulación gaussiana con un tiempo, una frecuencia central y un ancho de banda fraccional especificados.

La función sinc calcula la función sinc matemática de un vector o matriz de entrada. La función sinc es la transformada de Fourier continua inversa de un pulso rectangular de anchura 2π y altura unitaria.

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

tc = gauspuls('cutoff',50e3,0.6,[],-40); 
t1 = -tc : 1e-6 : tc; 
y1 = gauspuls(t1,50e3,0.6);

Genere la función sinc de un vector espaciado linealmente:

t2 = linspace(-5,5);
y2 = sinc(t2);

figure
subplot(2,1,1)
plot(t1*1e3,y1)
xlabel('Time (ms)')
ylabel('Amplitude')
title('Gaussian Pulse')

subplot(2,1,2)
plot(t2,y2)
xlabel('Time (sec)')
ylabel('Amplitude')
title('Sinc Function')

Figure contains 2 axes objects. Axes object 1 with title Gaussian Pulse contains an object of type line. Axes object 2 with title Sinc Function contains an object of type line.

Formas de onda de frecuencia de barrido

La toolbox también proporciona funciones para generar formas de onda de frecuencia de barrido como la función chirp. Dos parámetros opcionales especifican métodos de barrido alternativos y una fase inicial en grados. A continuación encontrará varios ejemplos de uso de la función chirp para generar chirps lineales o cuadráticos, o cuadráticos convexos y cóncavos.

Genere un chirp lineal.

t = 0:0.001:2;                 % 2 secs @ 1kHz sample rate
ylin = chirp(t,0,1,150);       % Start @ DC, cross 150Hz at t=1sec

Genere un chirp cuadrático.

t = -2:0.001:2;                % +/-2 secs @ 1kHz sample rate
yq = chirp(t,100,1,200,'q');   % Start @ 100Hz, cross 200Hz at t=1sec

Calcule y muestre los espectrogramas de los chirps.

figure
subplot(2,1,1)
spectrogram(ylin,256,250,256,1E3,'yaxis')
title('Linear Chirp')

subplot(2,1,2)
spectrogram(yq,128,120,128,1E3,'yaxis')
title('Quadratic Chirp')

Figure contains 2 axes objects. Axes object 1 with title Linear Chirp contains an object of type image. Axes object 2 with title Quadratic Chirp contains an object of type image.

Genere un chirp cuadrático convexo.

t = -1:0.001:1;          % +/-1 second @ 1kHz sample rate
fo = 100;
f1 = 400;                % Start at 100Hz, go up to 400Hz
ycx = chirp(t,fo,1,f1,'q',[],'convex');

Genere un chirp cuadrático cóncavo.

t = -1:0.001:1;          % +/-1 second @ 1kHz sample rate
fo = 400;
f1 = 100;                % Start at 400Hz, go down to 100Hz
ycv = chirp(t,fo,1,f1,'q',[],'concave');

Calcule y muestre los espectrogramas de los chirps.

figure
subplot(2,1,1)
spectrogram(ycx,256,255,128,1000,'yaxis')
title('Convex Chirp')

subplot(2,1,2)
spectrogram(ycv,256,255,128,1000,'yaxis')
title('Concave Chirp')

Figure contains 2 axes objects. Axes object 1 with title Convex Chirp contains an object of type image. Axes object 2 with title Concave Chirp contains an object of type image.

Otro generador de funciones es el vco (oscilador controlado por voltaje), que genera una señal que oscila a una frecuencia determinada por el vector de entrada. El vector de entrada puede ser un triángulo, un rectángulo o una sinusoide, entra otras posibilidades.

Genere dos segundos de una señal muestreada a 10 kHz cuya frecuencia instantánea sea un triángulo. Repita el cálculo para un rectángulo.

fs = 10000;
t = 0:1/fs:2;
x1 = vco(sawtooth(2*pi*t,0.75),[0.1 0.4]*fs,fs);
x2 = vco(square(2*pi*t),[0.1 0.4]*fs,fs);

Represente los espectrogramas de las señales generadas.

figure
subplot(2,1,1)
spectrogram(x1,kaiser(256,5),220,512,fs,'yaxis')
title('VCO Triangle')

subplot(2,1,2)
spectrogram(x2,256,255,256,fs,'yaxis')
title('VCO Rectangle')

Figure contains 2 axes objects. Axes object 1 with title VCO Triangle contains an object of type image. Axes object 2 with title VCO Rectangle contains an object of type image.

Trenes de pulsos

Para generar trenes de pulsos, puede utilizar la función pulstran.

Construya un tren de pulsos rectangulares de 2 GHz muestreado a una tasa de 100 GHz y un espaciamiento de 7,5 ns.

fs = 100E9;                    % sample freq
D = [2.5 10 17.5]' * 1e-9;     % pulse delay times
t = 0 : 1/fs : 2500/fs;        % signal evaluation time
w = 1e-9;                      % width of each pulse
yp = pulstran(t,D,@rectpuls,w);

Genere una señal de pulso gaussiano periódico a 10 kHz con un 50% de ancho de banda. 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 10 milisegundos. La amplitud de repetición debería atenuarse en 0,8 cada vez. Utiliza un identificador de función para especificar la función de generador.

T = 0 : 1/50e3 : 10e-3;
D = [0 : 1/1e3 : 10e-3 ; 0.8.^(0:10)]';
Y = pulstran(T,D,@gauspuls,10E3,.5);

figure
subplot(2,1,1)
plot(t*1e9,yp);
axis([0 25 -0.2 1.2])
xlabel('Time (ns)')
ylabel('Amplitude')
title('Rectangular Train')

subplot(2,1,2)
plot(T*1e3,Y)
xlabel('Time (ms)')
ylabel('Amplitude')
title('Gaussian Pulse Train')

Figure contains 2 axes objects. Axes object 1 with title Rectangular Train contains an object of type line. Axes object 2 with title Gaussian Pulse Train contains an object of type line.

Consulte también

| | | | | | | | |