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 y un periodo de . Un parámetro opcional de anchura especifica un múltiplo fraccional de en el que se produce el máximo de la señal.
La función square
genera una onda cuadrada con un periodo de . 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); nexttile plot(t,x1) axis([0 0.2 -1.2 1.2]) xlabel("Time (sec)") ylabel("Amplitude") title("Sawtooth Periodic Wave") nexttile plot(t,x2) axis([0 0.2 -1.2 1.2]) xlabel("Time (sec)") ylabel("Amplitude") title("Square Periodic Wave")
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 nexttile plot(t,x1) axis([-0.1 0.1 -0.2 1.2]) xlabel("Time (sec)") ylabel("Amplitude") title("Triangular Aperiodic Pulse") nexttile plot(t,x2) axis([-0.1 0.1 -0.2 1.2]) xlabel("Time (sec)") ylabel("Amplitude") title("Rectangular Aperiodic Pulse")
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 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 nexttile plot(t1*1e3,y1) xlabel("Time (ms)") ylabel("Amplitude") title("Gaussian Pulse") nexttile plot(t2,y2) xlabel("Time (sec)") ylabel("Amplitude") title("Sinc Function")
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 muestreado a 1 kHz durante 2 segundos. La frecuencia instantánea es 100 Hz en t = 0 y cruza 250 Hz en t = 1 segundo.
tlin = 0:0.001:2; ylin = chirp(tlin,100,1,250);
Genere un chirp cuadrático muestreado a 1 kHz durante 4 segundos. La frecuencia instantánea es 100 Hz en t = 0 y cruza 200 Hz en t = 1 segundo.
tq = -2:0.001:2;
yq = chirp(tq,100,1,200,"quadratic");
Calcule y muestre los espectrogramas de los chirps.
figure nexttile pspectrum(ylin,tlin,"spectrogram", ... Leakage=0.85,TimeResolution=0.1,OverlapPercent=99) title("Linear Chirp") nexttile pspectrum(yq,tq,"spectrogram", ... Leakage=0.85,TimeResolution=0.1,OverlapPercent=99) title("Quadratic Chirp")
Genere un chirp cuadrático convexo muestreado a 1 kHz durante 2 segundos. La frecuencia instantánea es 100 Hz en t = 0 y aumenta a 400 Hz en t = 1 segundo.
tcx = -1:0.001:1; fo = 100; f1 = 400; ycx = chirp(tcx,fo,1,f1,"quadratic",[],"convex");
Genere un chirp cuadrático cóncavo muestreado a 1 kHz durante 2 segundos. La frecuencia instantánea es 400 Hz en t = 0 y disminuye a 100 Hz en t = 1 segundo.
tcv = -1:0.001:1; fo = 400; f1 = 100; ycv = chirp(tcv,fo,1,f1,"quadratic",[],"concave");
Calcule y muestre los espectrogramas de los chirps.
figure nexttile pspectrum(ycx,tcx,"spectrogram", ... Leakage=0.85,TimeResolution=0.1,OverlapPercent=99) title("Convex Chirp") nexttile pspectrum(ycv,tcv,"spectrogram", ... Leakage=0.85,TimeResolution=0.1,OverlapPercent=99) title("Concave Chirp")
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 nexttile pspectrum(x1,t,"spectrogram", ... Leakage=0.9,FrequencyResolution=55) title("VCO Triangle") nexttile pspectrum(x2,t,"spectrogram", ... Leakage=0.9,FrequencyResolution=55) title("VCO Rectangle")
Trenes de pulsos
Para generar trenes de pulsos, puede utilizar la función pulstran
.
Construya un tren de pulsos rectangulares de 1 ns muestreado a una tasa de 100 GHz y un espaciamiento de 7,5 ns.
fs = 100e9; D = [2.5 10 17.5]' * 1e-9; t = 0 : 1/fs : 2500/fs; w = 1e-9; 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 nexttile plot(t*1e9,yp) axis([0 25 -0.2 1.2]) xlabel("Time (ns)") ylabel("Amplitude") title("Rectangular Train") nexttile plot(T*1e3,Y) xlabel("Time (ms)") ylabel("Amplitude") title("Gaussian Pulse Train")
Consulte también
chirp
| gauspuls
| pulstran
| rectpuls
| sawtooth
| sin
| sinc
| square
| tripuls
| vco