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 ool!o" de procesamiento de señales de Matlab posee una gran #ariedad de funciones para la generac gen eración ión de señ señales, ales, estas seña señales les re$ re$uier uieren en de una repr represen esentaci tación ón #ect #ectoria oriall de la #ari #ariable able tiempo, de manera continua o discreta. Para realizar una simulación de un inter#alo continuo, se usa un #ector de #alores discretos con un inter#alo de muestreo mu% pe$ueño. &omo #imos en post anteriores, anteriores , el siguiente comando genera un #ector llamado t de #alores $ue representan la #ariable tiempo, con un inter#alo de muestreo de ' ms entre ( % ' segundo. t ) (:(.((':'* +espués de creado el #ector $ue representa la #ariable tiempo, es posible iniciar el desarrollo de alguna señal de interés. En Matlab una señal discreta en el tiempo se representa e"actamente, por$ue los #alores de la señal son representados como los elementos de un #ector. in embargo las señales de tiempo continuo en Matlab son tan solo apro"imaciones. -a apro"imación consiste de un #ector cu%os elementos son mues mu estr tras as de la #e #erd rdad ader era a se seña ñall de ti tiem empo po co cont ntin inuo uo.. &u &uan ando do se us usa a es esta ta té técn cnic ica a pa para ra la repr re pres esen enta taci ción ón de se seña ñale les s co cont ntin inua uas s es im impo port rtan ante te es esco coge gerr el in inte ter# r#al alo o de mu mues estr treo eo lo suficientemente pe$ueño para asegurar $ue las muestras capturan todos los detalles de la señal.
EJEMPLOS DE SEÑALES EN MALA! -a generación de señales periódicas tales como ondas cuadradas % triangulares es una acti#idad mu% fácil de realizar en M-!.
"# SEÑAL $%AD&ADA &onsideremos primero la generación de una onda cuadrada de amplitud , frecuencia fundamental / 0medida en radianes radianes por segundo1 % ciclo útil r2o. 3ecordemos $ue el ciclo útil es la fracción de cada periodo en donde la señal es positi#a.
Para generar dic2a señal se pueden escribir lo siguiente en la linea de comandos:
44 ) '* 44 / ) '( 5 pi*
44 r2o ) (.6* 44 t ) (:(.((':'* 44 s$ ) 5s$uare0/5t7r2o1* 44 plot0t,s$1* En la segunda l8nea de este ejemplo, pi es una función interna de Matlab $ue calcula el número más cercano a la constante P9 en formato de coma flotante. El último comando es usado para #izualizar la señal generada. El comando plot dibuja l8neas conectando los #alores sucesi#os de la señal % as8 da la apariencia de una señal en tiempo continuo.
'# SEÑAL &(N)%LA&
&onsideremos a2ora la generación de una onda triangular de amplitud , frecuencia fundamental / % anc2o dt . El periodo de la onda triangular será con el má"imo #alor de la señal ocurriendo en t ) . El comando básico para generar esta señal es: 5 sa/toot20/ 5 t 7 dt1 El resultado se puede obser#ar en la gráfica a la iz$uierda
*# SEÑAL ES$AL+N En Matlab, el comando ones0M, ;1 genera una matriz de unos de tamaño M";, % el comando zeros0M, ;1 es una matriz de ceros del mismo tamaño. e puede 2acer uso de estas dos matrices para generar dos señales comúnmente usadas: la señal escalón % la señal impulso.
< ) =zeros0', '(1, ones0', ''1>*
Para la #ersión continua creamos un #ector $ue represente el tiempo el cual tenga muestras de un inter#alo separados por #alores mu% pe$ueños. -os comandos % los resultados se muestran a continuación: 44 u)=zeros0','(1,ones0',''1* 44 t)?':(.':'* 44 plot0t,u1
&omo se menciono anteriormente, una señal generada en Matlab es in2erentemente de naturaleza discreta. Para #isualizar una señal en tiempo discreto se puede 2acer uso del comando stem. Espec8ficamente stem0n, "1, bos$ueja los datos contenidos en el #ector " como una señal de tiempo discreto con los #alores de tiempo definidos por el #ector n. -os #ectores n % " deben tener dimensiones compatibles, es decir deben tener el mismo número de elementos. s8, para este caso para obtener la representación de esta señal en tiempo discreto creamos un #ector?tiempo el cual debe tener #alores separados por una unidad. 44 u)=zeros0','(1, ones0',''1>* 44 n)?'(:'(* 44 stem0n,u1 3ecuerde $ue para poder usar las funciones plot % stem, es re$uisito $ue los #ectores 0t % u1 ó 0n % u1 tengan iguales dimensiones. Por esta razón el #ector u se forma como una composición de diez ceros % '' unos, debido a $ue los arreglos t % n, tienen dimensión @' dado $ue inclu%en un elemento central el cual es el número cero. Para probar este 2ec2o, se puede 2acer uso de la función Matlab llamada size $ue de#uel#e como resultado un #ector con las dimensiones de la matriz $ue se le pasa como parámetro.
,# SEÑAL (MP%LSO-
-a #ersión discreta de la señal impulso se puede también generar con a%uda de las funciones zeros % ones, realizando una composición como sigue:
44 delta ) = zeros0 ' ,'( 1, ' , zeros0 ' ,'( 1 >* 44 n ) ?'(:'(* 44 stem0n,delta1*
# SEÑAL &A Para generar la señal rampa, tan solo es necesario recordar $ue esta función puede ser creada, como la composición de una recta A0"1 ) " a partir de cero % de la recta A0"1 ) ( para #alores de " menores de cero, as8 la #ersión discreta se muestra a continuación:
44 t')(:(.':'(* 44 rampa')t'* 44 rampa)=zeros0','('1,rampa'>* 44 t@)?'(:(.':(* 44 t)=t@,t'>* 44 plot0t,rampa1
/unci0n Stem en Scilab1 )r2ficas de Datos Discretos. 5 ABRIL, 20 14 / JU LI O CÉSAR
Hasta ahora solo hemos hecho uso e la !u"c#$" plot( ) la cual "os %erm#te &ra'car los (alores e u" (ector co" res%ecto a otro )hac#e"o las (eces e e*e + -. ue aemas, #cha !u"c#$" "os %erm#te mo#'car al&u"as %ro%#eaes como el color, el t#%o e %u"to o l#"ea ue usamos ue "ormalme"te solo e*amos los (alores %or e!ecto as (emos ue caa (e ue se "os %rese"ta la &ra'ca esta %arece u"a l#"ea co"t#"ua3%ero s# ueremos re%rese"tac#o"es #scretas 6ro7a7leme"te s# lle&amos au 7usca"o 8!u"c#$" stem e" Sc#la79 se&urame"te es %orue a estamos !am#l#ar#aos co" :atla7 su co"oc#a !u"c#$" Stem, la cual "os %erm#te real#ar re%rese"tac#o"es &ra'cas #scretas s#" maor com%l#cac#$" ue !u"c#o"a al #&ual ue plot(t,y) -> stem(t,y), %ues te te"&o u"a mala "ot#c#a Sc#la7 "o t#e"e esta !u"c#$", e" cam7#o "os %ro%orc#o"a la !u"c#$" plot2d3(t,y), la cual "os &ra'ca l#"eas rectas ue %arte" ese la a7sc#sa ‘t’ hasta el (alor ue le corres%o"e e" el e*e‘y’ u"a com%arac#$" e"tre la !u"c#$" stem() e Matlab plot2d3() e Scilab a%arece e" las '&uras 1 2, o"e se &e"era la &r;'ca e sin(t) %ara 50 muestras e t e"tre 0 26I3 EN MATLAB:
<#& 13 =ra'ca &e"eraa %or la !u"c#$" stem)t,. e :atla7 EN SCILAB:
<#& 23 =r;'ca &e"eraa %or la !u"c#$" %lot2>)t,. e Sc#la73
S#" em7ar&o como %oemos o7ser(ar e" la &r;'ca ue &e"eramos e" Sc#la7 "o es ta" est?t#ca como la ue &e"era stem() e Matlab, au"ue plot2d3( ) %uee ser me*oraa s# %or e*em%lo lue&o e &ra'car co" %lot2>)t,. &ra'camos so7re la m#sma (e"ta"a co" la !u"c#$" plot( ) e" cua o%c#$" e 9t#%o e l#"ea9 %o"emos la letra @o ueara e la s#&u#e"te !orma
uea"o e la s#&u#e"te ma"era la &r;'ca resulta"te
<#& >3 =r;'ca resulta"te al usar %lot)t,,o. so7re u"a &r;'ca %re(#a %lot2>)t,.3
6ara &e"erar &r;'cas como la e la '&ura > e" Sc#la7 %u#?semos e'"#r e"to"ces u"a !u"c#$" %ro&ramaa %or "otros m#smos ue se llame stem). rec#7a como %ar;metros u" (ector #"e%e"#e"te ‘t u" el (ector e%e"#e"te ‘y tal (e e la !orma !"#$t%o# &'stem(t,y) e" el cuer%o e la !u"c#$" se %o"e" los a"ter#ores c$#&os, au"ue %erso"alme"te cua"o "eces#to u"a &r;'ca e este t#%o solo me 7asta %o"er esa os l#"eas l#sto3 Recuera ue como muchas otras !u"c#o"es como %lot) . %lot2>) . t#e"e" muchas %ro%#eaes ue %uee" ser mo#'caas %ara ar como resultao re%rese"tac#o"es m;s est?t#cas o me*ores3 Ds%ero ue este corto @tutor#al te haa s#o e aua, s# t#e"es al&u"a su&ere"c#a %ara !uturos artculos "o ues e" come"tar3 Autor Jul#o Dche(err#3
Bráfica de señales continuas % discretas en Matlab ? &ontinuas upongamos $ue se $uiere graficar por ejemplo eC0j/(t1 '. +efinir t en un inter#alo ?@( a @( con paso (.' t=-20:0.1:20;
23 Calcular !)t. co" !recue"c#a 1/10E%# (i y pi representan el número imaginario y al número pi en Matlab respectivamente) ft=exp(i*1/10*pi*t);
>3 =ra'car !)t. co"tra el t#em%o plot(t,ft)
43 Resultao )s$lo se &ra'ca la %arte real.
F G#scretas upongamos $ue se $uiere graficar por ejemplo eC0j/(n1
'. +efinir n en un inter#alo ?'( a '(, como n son enteros el paso es ' n=-20:1:20;
23 Calcular !" co" !recue"c#a 1/10E%# (i y pi representan el número imaginario y al número pi en Matlab respectivamente) fn=exp(i*1/10*pi*n);
>a3 =ra'car !" co"tra el t#em%o usa"o %lot plot(n,fn,'*')
4a3 Resultao )s$lo se &ra'ca la %arte real.
Db. Braficar f=n> contra el tiempo usando la función stem stem(n,fn)
473 3esultado 0sólo se grafica la parte real1