Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejemplos de Codigo para Formar Senales D
Ejemplos de Codigo para Formar Senales D
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.
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.
>> 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
A * sawtooth(w * t + Wdt)
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);
>> t=-1:0.1:1;
>> plot(t,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.
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.
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);
- Discretas
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);