0% encontró este documento útil (0 votos)
215 vistas11 páginas

Ejemplos de Código para Formar Señales Discretas en Matlab

Este documento proporciona ejemplos de código en Matlab para generar señales discretas como cuadradas, triangulares, escalón e impulso. Explica cómo representar señales continuas y discretas mediante vectores que simulan muestras del tiempo, y cómo visualizarlas usando funciones como plot y stem.

Cargado por

Fabian Castro
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
215 vistas11 páginas

Ejemplos de Código para Formar Señales Discretas en Matlab

Este documento proporciona ejemplos de código en Matlab para generar señales discretas como cuadradas, triangulares, escalón e impulso. Explica cómo representar señales continuas y discretas mediante vectores que simulan muestras del tiempo, y cómo visualizarlas usando funciones como plot y stem.

Cargado por

Fabian Castro
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 11

Ejemplos de código para formar señales discretas en Matlab

El objeto más básico en Matlab es una matriz numérica con la posibilidad de almacenar números
complejos. Por supuesto, los datos obtenidos en el estudio de señales y sistemas son muy bien
representados en forma de matrices. En este post usaremos Matlab para la generación de señales
elementales: cuadrada, triangular, entre otras.

El ToolBox de procesamiento de señales de Matlab posee una gran variedad de funciones para la
generación de señales, estas señales requieren de una representación vectorial de la variable
tiempo, de manera continua o discreta. Para realizar una simulación de un intervalo continuo, se usa
un vector de valores discretos con un intervalo de muestreo muy pequeño.

Como vimos en post anteriores, el siguiente comando genera un vector llamado t de valores que
representan la variable tiempo, con un intervalo de muestreo de 1 ms entre 0 y 1 segundo.

t = 0:0.001:1;

Después de creado el vector que representa la variable tiempo, es posible iniciar el desarrollo de
alguna señal de interés.

En Matlab una señal discreta en el tiempo se representa exactamente, porque los valores de la señal
son representados como los elementos de un vector. Sin embargo las señales de tiempo continuo en
Matlab son tan solo aproximaciones. La aproximación consiste de un vector cuyos elementos son
muestras de la verdadera señal de tiempo continuo. Cuando se usa esta técnica para la
representación de señales continuas es importante escoger el intervalo de muestreo lo
suficientemente pequeño para asegurar que las muestras capturan todos los detalles de la señal.

EJEMPLOS DE SEÑALES EN MATLAB 

La generación de señales periódicas tales como ondas cuadradas y triangulares es una actividad
muy fácil de realizar en MATLAB.

1) SEÑAL CUADRADA
Consideremos primero la generación de una onda cuadrada de amplitud A, frecuencia fundamental w
(medida en radianes por segundo) y ciclo útil rho. Recordemos que el ciclo útil es la fracción de cada
periodo en donde la señal es positiva.

Para generar dicha señal se pueden escribir lo siguiente en la linea de comandos:

>> A = 1;
>> w = 10 * pi;
>> rho = 0.5;
>> t = 0:0.001:1;
>> sq = A*square(w*t+rho);
>> plot(t,sq);

En la segunda línea de este ejemplo, pi es una función interna de Matlab que calcula el número más
cercano a la constante PI en formato de coma flotante. El último comando es usado para vizualizar la
señal generada. El comando plot dibuja líneas conectando los valores sucesivos de la señal y así da
la apariencia de una señal en tiempo continuo.

2) SEÑAL TRINGULAR 

Consideremos ahora la generación de una onda triangular de amplitud A, frecuencia fundamental w y


ancho Wdt . El periodo de la onda triangular será T con el máximo valor de la señal ocurriendo en t =
WT . El comando básico para generar esta señal es:

A * sawtooth(w * t + Wdt)

El resultado se puede observar en la gráfica a la izquierda

3) SEÑAL ESCALÓN

En Matlab, el comando ones(M, N) genera una matriz de unos de tamaño MxN, y el comando
zeros(M, N) es una matriz de ceros del mismo tamaño. Se puede hacer uso de estas dos matrices
para generar dos señales comúnmente usadas: la señal escalón y la señal impulso.

Una señal paso de amplitud uno, puede ser generada con el siguiente comando.

U = [zeros(1, 10), ones(1, 11)];


Para la versión continua creamos un vector que represente el tiempo el cual tenga muestras de un
intervalo separados por valores muy pequeños. Los comandos y los resultados se muestran a
continuación:

>> u=[zeros(1,10),ones(1,11);
>> t=-1:0.1:1;
>> plot(t,u)

Como se menciono anteriormente, una señal generada en Matlab es inherentemente de naturaleza


discreta. Para visualizar una señal en tiempo discreto se puede hacer uso del comando stem.
Específicamente stem(n, x), bosqueja los datos contenidos en el vector x como una señal de tiempo
discreto con los valores de tiempo definidos por el vector n. Los vectores n y x deben tener
dimensiones compatibles, es decir deben tener el mismo número de elementos. Así, para este caso
para obtener la representación de esta señal en tiempo discreto creamos un vector-tiempo el cual
debe tener valores separados por una unidad.

>> u=[zeros(1,10), ones(1,11)];


>> n=-10:10;
>> stem(n,u)

Recuerde que para poder usar las funciones plot y stem, es requisito que los vectores (t y u) ó (n y u)
tengan iguales dimensiones. Por esta razón el vector u se forma como una composición de diez
ceros y 11 unos, debido a que los arreglos t y n, tienen dimensión 21 dado que incluyen un elemento
central el cual es el número cero. Para probar este hecho, se puede hacer uso de la función Matlab
llamada size que devuelve como resultado un vector con las dimensiones de la matriz que se le pasa
como parámetro.

4) SEÑAL IMPULSO:

La versión discreta de la señal impulso se puede también generar con ayuda de las funciones zeros y
ones, realizando una composición como sigue:
>> delta = [ zeros( 1 ,10 ), 1 , zeros( 1 ,10 ) ];
>> n = -10:10;
>> stem(n,delta);

5) SEÑAL RAMPA 

Para generar la señal rampa, tan solo es necesario recordar que esta función puede ser creada,
como la composición de una recta Y(x) = x a partir de cero y de la recta Y(x) = 0 para valores de x
menores de cero, así la versión discreta se muestra a continuación:

>> t1=0:0.1:10;
>> rampa1=t1;
>> rampa=[zeros(1,101),rampa1];
>> t2=-10:0.1:0;
>> t=[t2,t1];
>> plot(t,rampa)
Función Stem en Scilab, Gráficas de
Datos Discretos.
5 ABRIL, 2014 / JULIO CÉSAR

Hasta ahora solo hemos hecho uso de la función plot( ) la cual nos permite graficar
los valores de un vector con respecto a otro (haciendo las veces de eje X y Y) y que
ademas, dicha función nos permite modificar algunas propiedades como el color, el
tipo de punto o linea que usamos y que normalmente solo dejamos los valores por
defecto y así vemos que cada vez que se nos presenta la grafica esta parece una
linea continua….¿pero si queremos representaciones discretas?
Probablemente si llegamos aquí buscando “función stem en Scilab” seguramente
es porque ya estamos familiarizados con Matlab y su conocida función Stem, la
cual nos permite realizar representaciones graficas discretas sin mayor
complicación y que funciona al igual que plot(t,y) -> stem(t,y), pues te tengo una
mala noticia Scilab no tiene esta función, en cambio nos proporciona la
función plot2d3(t,y), la cual nos grafica lineas rectas que parten desde la
abscisa ‘t’ hasta el valor que le corresponde en el eje‘y’ una comparación entre la
función stem() de Matlab y plot2d3() de Scilab aparece en las figuras 1 y 2, donde
se genera la gráfica de sin(t) para 50 muestras de t entre 0 y 2PI.
EN MATLAB:
Fig 1. Grafica generada por la función stem(t,y) de Matlab

EN SCILAB:

 
Fig 2. Gráfica generada por la función plot2d3(t,y) de Scilab.

Sin embargo como podemos observar en la gráfica que generamos en Scilab no es


tan estética como la que genera stem() de Matlab, aunque plot2d3( ) puede ser
mejorada si por ejemplo luego de graficar con plot2d3(t,y) graficamos sobre la
misma ventana con la función plot( ) y en cuya opción de ”tipo de linea” ponemos
la letra ‘o’ y quedaría de la siguiente forma:
Quedando de la siguiente manera la gráfica resultante:

Fig 3. Gráfica resultante al usar plot(t,y,’o’) sobre una gráfica previa plot2d3(t,y).

 
Para generar gráficas como la de la figura 3 en Scilab pudiésemos definir entonces
una función programada por notros mismos que se llame stem() y reciba como
parámetros un vector independiente ‘t’ y un y el vector dependiente ‘y’ tal vez de
la forma function []=stem(t,y) y en el cuerpo de la función se ponen los anteriores
códigos, aunque personalmente cuando necesito una gráfica de este tipo solo me
basta poner esa dos lineas y listo.
Recuerda que como muchas otras funciones como plot( ) y plot2d3( ) tienen
muchas propiedades que pueden ser modificadas para dar como resultado
representaciones más estéticas o mejores.

Espero que este corto ‘tutorial’ te haya sido de ayuda, si tienes alguna sugerencia
para futuros artículos no dudes en comentar.

Autor: Julio Echeverri.


Gráfica de señales continuas y discretas en Matlab
- Continuas

Supongamos que  se quiere graficar por ejemplo e^(jw0t)

1. Definir t en un intervalo -20 a 20 con paso 0.1


t=-20:0.1:20;

2. Calcular f(t) con frecuencia 1/10*pi (i y pi representan el número imaginario y al número pi en Matlab
respectivamente)
ft=exp(i*1/10*pi*t);

3. Graficar f(t) contra el tiempo


plot(t,ft)

4. Resultado (sólo se grafica la parte real)

- Discretas

Supongamos que  se quiere graficar por ejemplo e^(jw0n)

1. Definir n en un intervalo -10 a 10, como n son enteros el paso es 1


n=-20:1:20;

2. Calcular f[n] con frecuencia 1/10*pi (i y pi representan el número imaginario y al número pi en Matlab
respectivamente)
fn=exp(i*1/10*pi*n);

3a. Graficar f[n] contra el tiempo usando plot


plot(n,fn,'*')

4a. Resultado (sólo se grafica la parte real)


3b. Graficar f[n] contra el tiempo usando la función stem
stem(n,fn)

4b. Resultado (sólo se grafica la parte real)

También podría gustarte