Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

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

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

Figure contains 2 axes objects. Axes object 1 with title Sawtooth Periodic Wave, xlabel Time (sec), ylabel Amplitude contains an object of type line. Axes object 2 with title Square Periodic Wave, xlabel Time (sec), ylabel Amplitude 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
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")

Figure contains 2 axes objects. Axes object 1 with title Triangular Aperiodic Pulse, xlabel Time (sec), ylabel Amplitude contains an object of type line. Axes object 2 with title Rectangular Aperiodic Pulse, xlabel Time (sec), ylabel Amplitude 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
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")

Figure contains 2 axes objects. Axes object 1 with title Gaussian Pulse, xlabel Time (ms), ylabel Amplitude contains an object of type line. Axes object 2 with title Sinc Function, xlabel Time (sec), ylabel Amplitude 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 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")

Figure contains 2 axes objects. Axes object 1 with title Linear Chirp, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image. Axes object 2 with title Quadratic Chirp, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image.

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

Figure contains 2 axes objects. Axes object 1 with title Convex Chirp, xlabel Time (ms), ylabel Frequency (Hz) contains an object of type image. Axes object 2 with title Concave Chirp, xlabel Time (ms), ylabel Frequency (Hz) 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
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")

Figure contains 2 axes objects. Axes object 1 with title VCO Triangle, xlabel Time (s), ylabel Frequency (kHz) contains an object of type image. Axes object 2 with title VCO Rectangle, xlabel Time (s), ylabel Frequency (kHz) 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 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")

Figure contains 2 axes objects. Axes object 1 with title Rectangular Train, xlabel Time (ns), ylabel Amplitude contains an object of type line. Axes object 2 with title Gaussian Pulse Train, xlabel Time (ms), ylabel Amplitude contains an object of type line.

Consulte también

| | | | | | | | |