You are on page 1of 16

UniversidadNacionaldeSanAgustnArequipaMSc.

EbertSanRomnCastillo
ProcesamientoDigitaldeSeales
2013A

Introduccion y reconocimiento de las


herramientas de Matlab par el Procesado de la
Seal
MSc.EbertSanRoman
UniversidadNacionaldeSanAgustin

Estudiante
Sumario

Los estudiantes al realizar la practica aprendern a


simularysefamiliarizaranconelusodeMATLABcomoherramienta
paraeltratamientodigitaldeseales.
SebuscaimplementaroperacionesrelacionadasalosSistemasLIT,
entendiendo los compromisos que estas operaciones conllevan., al
finalelalumnoanalizaralasmodificacionesrealizadasparapresentar
observacionesyconclusionesdelosexperimentos.

Usos
EstatareasepuedeaplicaracursosintroductoriosdelProcesamientodela
Seal.

Lista de Equipos

UnacomputadortaconMATLAB

Referencias
A.Oppenheim,TratamientodeSealesenTiempoDiscreto(2da
Edicin);PrenticeHall
Ingle_V.K.,ProakisJ.G.:DigitalSignalProcessingUsing
Matlab[c],Version4,PWSPublishingCompany,1999.
KraussT.,LittleJ.,ShureL.,SignalProcessingToolboxforUse
withMATLABUsersGuideCOPYRIGHT19882001byThe
MathWorks,Inc.

UniversidadNacionaldeSanAgustnArequipaMSc.EbertSanRomnCastillo
ProcesamientoDigitaldeSeales
2013A

Procedimiento del Laboratorio


Actividad 1: Matlab bsico

Matlab tambin puede operar como una calculadora. Comprobarlo mediante


operacionessencillascomo:
>>
>>
>>
>>
>>

2+2
2*3
3/5
2^8
(3 + 5) * 8

LosdatosnumricosconlosquetrabajaMatlabsondetipomatricialNxM,de
talmaneraquelosescalareslosconsideramatrices1x1;losvectoresdetipofila
sonmatrices1xMylosvectoresdetipocolumnasonmatricesNx1.
Existencuatromanerasdegenerarunamatriz:
1.Mediantedeclaracionesyfuncionespropias.
2.Creadasenunficheroarchivo.m
3.Cargadasdesdeficherosexternosdedatos.
4.Mediantedeclaracinexplcitadetodossuselementos.
Veamosunejemplodelcaso4.Paraello,teclear:
>> A = [ 1 2 3; 4 5 6];
Teclearahorasimplemente:
>> A
Observar que al introducir los elementos de una matriz hay que delimitarlos
mediantecorchetes;loselementosdeunafilaseseparanmedianteespaciosen
blancoocomas;lasdiferentesfilasseseparanmediantepuntoycoma.
ProbarahoraconalgunasfuncionespropiasdeMatlab,como:
>> size(A)
>> who
>> whos

UniversidadNacionaldeSanAgustnArequipaMSc.EbertSanRomnCastillo
ProcesamientoDigitaldeSeales
2013A
ElcomandowhomuestralasvariablesalmacenadasenelworkspacedeMatlab.
Como se puede apreciar, la matriz A esta almacenada en el workspace para
futurasoperacionesconella.Lasvariablespresentesenelworkspacetambinse
puedenvisualizarpulsandolapestaaWorkspacedelentornodeventanaspropio
deMatlab.Sisedeseaconocerelcomportamientodealgunafuncinpropiade
Matlab,sedisponedeuncomandomuytil,help.Probar,porejemplo:
>> help size
>> help whos
Osimplemente:
>> help
Enesteltimocaso,Matlabmuestralosoperadoresqueutilizaascomolagran
cantidad de funciones propias a las que tiene acceso para operar con ellas
ordenadasporgruposafines(otoolboxes).

Sisedeseaconocerelvalordelelementosituadoenlaprimerafilaysegunda
columnadelamatrizA,teclear:
>> A(1,2)
Obien,sisedeseaaccederatodosloselementosdelaprimerafila:
>> A(1,:)
Tambinsepuedeaccederatodoslosdelasegundacolumnayasignarlosaun
nuevovectora:
>> a = A(:,2)
Probarconelcomandowhoahora.Emplearahoraelcomandosizeparaconocer
lasdimensionesdea.Esunvectorcolumna,conloqueunadesusdimensioneses
uno.Paravectores(filaocolumna)sepuedeutilizarelcomandolength,quenos
indicasulongitud:
>> length(a)
Tenerencuentaqueparaaccederaloselementosdeunvector(omatriz)hayque
usar parntesis mientras que para generar un vector (o matriz) hay que usar
corchetes.
Sepuedenconstruirnuevasmatricesaadiendofilasocolumnasaalgunamatriz
existente.
Probarlosiguiente:

UniversidadNacionaldeSanAgustnArequipaMSc.EbertSanRomnCastillo
ProcesamientoDigitaldeSeales
2013A
>> p = [7 8 9]
>> P = [A;p]
Obien,sustraerunapartedeunamatrizparaformarunanueva:
>> Q = P(:, 2:3)
Qupartehaseleccionado?

Sienestemomentoseintroduceelcomandowhoaparecerntodaslasvariables
generadashastaelmomento(probarlo).Paraborrardelworkspacealgunadeellas
probarconunadeclaracindeltipo:
>> clear p Q
>> who
Quocurrirasisetecleaclearsinningnargumento?Nohacerlo,puestoquese
necesitarnesasvariablesparacontinuarconlaprctica;elcomandohelpdarla
solucin.

Expresiones aritmticas matriciales

Trasposicin

Eloperadorparaefectuarlatrasposicinmatricialeselsmbolo.
EvaluemosunanuevamatrizB,traspuestadeAyunvectorbtraspuestodea:
>>
>>
>>
>>
>>

A = [1 2 -1; 4 0 2; 2 1 -2];
B = A
size(B)
b = a
size(b)

Silamatrizovectoresdetipocomplejo,conelsmbolosecrearlamatrizo
vectortraspuestoconjugado.

UniversidadNacionaldeSanAgustnArequipaMSc.EbertSanRomnCastillo
ProcesamientoDigitaldeSeales
2013A

AdicinySustraccin

Losoperadoresparasumaryrestarsonlossmbolos+y.Matlabefectuarestas
operacionessiemprequelasmatricestenganlasmismasdimensiones:
>> A + A
>> b + b
>> A + B
Tambinexistelaposibilidaddesumarunescalaratodosloselementosdeuna
matrizovector:
>> C = A + 20.456
>> c = a - 1.5

Multiplicacin

El operador para multiplicar es el smbolo *. Matlab efectuar esta operacin


siemprequelasmatricesseancompatibles.
>>
>>
>>
>>
>>
>>

D=A*B
size(D)
E=B*A
size(E)
d=a*b
e=b*a

Tambinpodemosefectuarelproductoescalarentredosvectoresdelasmismas
dimensionescomoayc:
>> a*c
Como se observa, el resultado es un escalar, ya que en este caso a y c son
columnas.Sifuesenfilas,seradelaformaa*c.
Tambinpodemosefectuarelproductodeunescalarportodosloselementosde
unamatrizodeunvector:
>> 3.5 * a
>> -sqrt(2) * A

UniversidadNacionaldeSanAgustnArequipaMSc.EbertSanRomnCastillo
ProcesamientoDigitaldeSeales
2013A

Divisin

ExistendostiposdedivisinenMatlab,hacialaderecha(smbolo/)yhaciala
izquierda (smbolo \). Si deseamos resolver el sistema matricial X * A = E,
nuestraexpresinser:
>> X = E / A
EstaexpresinesequivalenteaefectuarX=E*inv(A).Perosielsistemaque
deseamosresolveresA*X=C,deberemosefectuarunadivisinalaizquierda:
>> X = A \ C
Esta expresin es equivalente a X = inv(A)*C. Si trabajamos con escalares,
tenemosque1/4=4\1(comprobar).

Potencia

Elsmboloparaefectuarpotenciases.LaexpresinAkseefectuarsiempre
queAseaunamatrizcuadradaykunescalar:
>> D ^ 2

Operaciones elemento a elemento


EstasoperacionesjueganunpapelMUYimportanteenelprocesadodeseales
discretas comoveremosalolargodelcurso.Conunpuntoprecediendoalos
operadoresdelproducto(.*),delasdivisiones(./.\)ydelapotencia(.)estas
operacionessellevarnacaboelementoaelemento.
Introducirlosnuevosvectoresxeyyobservarlossiguientesresultados:
>>
>>
>>
>>
>>
>>
>>

x = [1 2 3];
y = [4 5 6];
x.*y
x.\y
x.^y
x.^2
2 .^ x

UniversidadNacionaldeSanAgustnArequipaMSc.EbertSanRomnCastillo
ProcesamientoDigitaldeSeales
2013A

VariablesespecialesyOperacionesconnmeroscomplejos

Matlabdisponedeunaseriedevariablesmuytilesparaoperacionesaritmticas:
pi,Inf,NaN,eps,i,j.Probarlassiguientesexpresiones:
>>
>>
>>
>>

pi
eps
i
j

ElsignificadodelavariableNaNesNotaNumber.Lavariableepsmuestrala
resolucinnumricadeMatlab.Mientrasquelasvariablesiyjtomanpordefecto
elvalordesqrt(1).

Operacionesconnmeroscomplejos

Losnmeroscomplejosestnpermitidosentodaslasoperacionesyfuncionesde
Matlab.ProbarenMatlabexpresionesdeltipo:
>> x = 2+i*3
>> 2+j*3
>> X = [1 2; 3 4]+i*[5 6; 7 8]
Nota:Losvaloresdeiydejpuedenserredefinidos,aunqueenesemomento
perdernsucondicindesqrt(1).Adems,elvalorsqrt(1)puedeserreasignado
aotravariable:
>> jj = sqrt(-1)
>> x = 2+j*3

SalvadodelworkspacedeMatlab

Para grabar los resultados de una sesin de trabajo, as como los comandos
introducidosenMatlab,seutilizaelcomandosave(hacerunhelpdesave).
Probarunadeclaracindeestetipo:
>> save mat1 A B a b
>> save mat2 C D x y
>> clear

UniversidadNacionaldeSanAgustnArequipaMSc.EbertSanRomnCastillo
ProcesamientoDigitaldeSeales
2013A

Conelcomandoclearsehanborradotodaslasvariablesdelworkspace(probar
conwho).Peroenlosficherosmat1.matymat2.matseencuentranalmacenadas
algunasdelasvariablesquehabansidogeneradas.Pararecuperaresasvariables
hayqueusarelcomandoload:
>>
>>
>>
>>

load mat1
who
load mat2
who

Operador:(dospuntos)

El operador: (dos puntos) en Matlab merece un epgrafe especial puesto que


simplifica muchas expresiones y elimina bucles de declaraciones innecesarias.
Este operador es extremadamente til en la programacin de funciones de
procesadodeseal.
Unamanerasencilladegenerarunvectorconlosnmerosenterosde1a100esla
siguiente:
>> x = 1:100
Sideseramosgenerarunvectorsimilarperosloconlosnmerospares:
>> y = 2:2:100
Tambinpodemostrabajarconincrementosnoenterosonegativos:
>> z = 0: pi/8: pi
>> u = 10:-1:-5;
Observarquealfinalizar unaexpresinconunpuntoycomaelresultado no
apareceenpantalla.Matlabejecutaladeclaracinenmodonovisible.
Engeneral,laexpresinj:kesequivalentea[j,j+1,j+2,...,k];sik<jel
resultado es una matriz vaca, de dimensiones 0x0; la expresin j: i: k es
equivalentea[j,j+i,j+2i,...,k].
Comoyasehavistoanteriormente,eloperador:(dospuntos)puedetambinser
usadoparaseleccionarpartesdeunamatriz.
>> b = A (:,1)

UniversidadNacionaldeSanAgustnArequipaMSc.EbertSanRomnCastillo
ProcesamientoDigitaldeSeales
2013A

Matricestiles

Matlabpermitetrabajarconmatricesvacas,dedimensin0x0,queseempleanen
inicializacionesdealgoritmos:
>> x = []
>> size(x)
Adems,Matlabpermitegenerarlassiguientesmatrices:zeros,ones,eye,diag,
triu,tril,toeplitz,randcuyascaractersticassepuedenconocerconhelp.Genere
lasmatricesanterioresconunadimensinde3X3.

Funciones matemticas

Elementoaelemento

Matlabdisponedelassiguientes funciones cuyoargumentopuedeserescalar,


vectoromatriz,efectundoselasfuncionesconloselementosdeunamatriz:
Realicelassiguientesoperacionesconescalaresyvectores:
sin, cos, tan, asin, acos, atan, exp, log, log10, abs, sqrt, sign ,
rem, round, floor, ceil

Operacinporcolumnas

Otrasfuncionesmatemticasquealseraplicadasamatricesoperanporcolumnas
son:
Realicelassiguientesoperacionesconescalaresyvectores:
max, min, mean , median, std, sum, prod, sort, any, all
Generarunamatrizparaprobarelcomportamientodeestasfunciones.

Operadoresrelacionalesylgicos

Matlabdisponedelossiguientesoperadoresrelacionales:

UniversidadNacionaldeSanAgustnArequipaMSc.EbertSanRomnCastillo
ProcesamientoDigitaldeSeales
2013A

Silaexpresinrelacionalescierta,elresultadodeMatlabes1;siesfalsa,el
resultadoes0.
Losoperadoreslgicossonlossiguientes:(AND),|(OR),(NOT).
Probarlasexpresionesrelacionalesanteriores:
>> 2 +2 == 4
>> 56.2 ~= 56.2

Elcomandofind

Elcomandofindseutilizaramenudoalolargodelasprcticasparaencontrar
losndicesdeunasecuenciaquesatisfacenunacondicinbooleana.Porejemplo,
vamosautilizarelcomandofindparaaveriguarlaposicinenlaqueseencuentra
elmximovalordeunvector:
Crearelvector
>> x=[1 2 4 -1 8];
Paraello,tenerencuentaque
>> b=find(a)
Devuelveenblasposicionesdeloselementosdiferentesdecerodea.Porlo
tanto,elsiguientecomando:
>> y=find(x>=max(x))
Quvalordevolvereny?Compararconelresultadoobtenidoalefectuar
>> [maximo,y] = max(x);

10

UniversidadNacionaldeSanAgustnArequipaMSc.EbertSanRomnCastillo
ProcesamientoDigitaldeSeales
2013A

Grficas
Lavisualizacinderesultadosesunaayudafundamentalenmuchosproblemas
relacionadosconelprocesadodelaseal.ElcomandoprincipaldeMatlabpara
realizargraficasesplot.
Realicemosunejemplodealgunasutilidadesgrficas:
>> eje = -2*pi : .05 : 2*pi;
>> x = sin(eje);
>> plot(x)
Observarelejehorizontaldeestagrfica:nocoincideconelautnticorangode
valores.
Probemosahora:
>> plot(eje,x)
Aestagrficaselepuedeaadirenrejillado,titulo,etiquetadodelosejes:
>>
>>
>>
>>

grid
title(Funcion sin)
xlabel(tiempo)
ylabel(amplitud)

Existenotrasnumerosasopciones(helpplot)como:semilogx,semilogy,loglog,
polar,mesh.
Adems,medianteelcomandoholdpodemosconservarunagrficaenpantalla
paravisualizarenlamismapantallaunvectordiferente:
>> hold
>> y = sin(eje + 0.25);
>> plot(eje,y)
Tecleandonuevamentehold,lagrficaactualslosemantendrenpantallahasta
unnuevocomandoplot.Elcomandoholdonaseguralaactivacindelholdyel
comandoholdoffaseguraladesactivacin.
Tambinesposiblevisualizarvariasgrficassimultneamente.Paraellohayque
utilizarelcomandofigure:
>> figure(1)
>> y = sin(eje + 0.25);
>> plot(eje,y)

11

UniversidadNacionaldeSanAgustnArequipaMSc.EbertSanRomnCastillo
ProcesamientoDigitaldeSeales
2013A
En estecasoaparece unanuevaventana que muestrala grfica anterior. Para
conmutar entre las distintas grficas hay que utilizar asimismo figure (o
seleccionarlafiguraconelratn):
>> figure(0)
Estainstruccinactivadenuevolaprimeraventana.Veamosahoraunejemplo
para dibujar grficas en forma de secuencias, en concreto, una secuencia
sinusoidal:
>> n = 0: 30;
>> s = sin(n*pi/15);
>> stem(n,s)

Comandos de control de flujo


Matlabdisponedeloscomandosmsusadosporloslenguajesdealtonivelpara
controlar el flujo de las operaciones, aunque se recomiendo no abusar de los
buclesyaqueestamosanteunlenguajeinterpretadoyestoralentizamucholos
procesos. Es conveniente aprender a buscar una solucin de programacin
alternativamanejandointeligentementelasoperacionesvectoriales.

Buclesforend

Conestecomandopuedenrepetirseunadeclaracinogrupodedeclaracionesel
nmerodevecesquedeseemos.
Probemoselsiguienteejemplo:
>> for i = 1 : 10
>> p(i) = i^ 2;
>> end
Laanteriorexpresinesequivalentea
>>x = (1: 10). ^ 2

Bucleswhileend

Con este bucle un conjunto de declaraciones pueden repetirse un nmero


indeterminadodeveceshastaquesecumplaunaciertacondicinrelacional.

12

UniversidadNacionaldeSanAgustnArequipaMSc.EbertSanRomnCastillo
ProcesamientoDigitaldeSeales
2013A
Probemoselsiguienteejemplo:
>> n = 0;
>> a = 500;
>> while 2^n < a
>> n = n + 1;
> >end
Quhaceestebucle?Culeselvalordenalterminarelbucle?

Buclesifelseend

Elsiguienteejemplocalculalainversadeunamatrizenelcasodequeestasea
cuadrada.
DefinirunamatrizAantesderealizarelejemplo:
>> tamano = size(A);
>> if tamano(1) == tamano(2)
> inversa = inv(A)
> elseif tamano(1) > tamano(2)
> disp(A tiene mas filas que columnas)
> else
> disp(A tiene mas columnas que filas)
> end (Nota: en Octave el comando es endif)

Generacin de ficheros archivo.m


Losficheros.msonficherosdetextoquecontienendeclaracionesdeMatlab.En
lugardeescribircomandoslneatraslnea,esposibleescribirficherosdetexto
usandouneditordetextoscomoxeditoelpropioeditorintegradoenelpaquete
Matlab.
Existendostiposdeficheros.m:

Ficherosdetiposcript

Sonficherosquecontienensecuenciasdecomandos.Matlabejecutaestosficheros
comosiloscomandosaparecieranlneatraslneaenlaventanadeejecucin.

Crearunficherollamadodata.mquecontengalassiguienteslneas:

13

UniversidadNacionaldeSanAgustnArequipaMSc.EbertSanRomnCastillo
ProcesamientoDigitaldeSeales
2013A
#GeneracindelamatrizA
>>A = [1 2 3 4; 5 6 7 8; 9 10 11 12];

Grabardata.mydesdeMatlabteclear:
>> data
>> whos
>> A

Ficherosdefunciones.m

Crearunficheromedia.mconlassiguienteslneas:
function [y,l] = media(x)
# Calculo de la media
longitud = length(x);
l=longitud;
y = sum(x) / longitud;
end
AhorallamaremosaesafuncindesdeMatlab:
>> vector = 1:29;
>> [y,l]=media(vector);
Examinemoselcontenidodelficheromedia.m:
Laprimera lnea deunafuncin.msiempreempieza conlapalabra function,
seguidadela/svariable/squedevuelve(sisonmasdeuna,debenirseparadaspor
comas y delimitadas por corchetes); a continuacin aparece el nombre de la
funcinyentreparntesislalistadeargumentosdeentradaalafuncinseparados
porcomas.Elnombredelficherohadecoincidirconelnombredelafuncinque
contiene,seguidode.m.Trasestalneavienenloscomentariosexplicativosdela
funcin.Estaslneasvienenprecedidasporelsmbolo#.Cuandosetecleaunhelp
delafuncin,enpantallaaparecernestoscomentarios.Lasvariablesinternasde
la funcin (longitud en este caso) son locales y no existirn en el workspace
cuandoelcomandomediahayafinalizado.Alahoradedevolverlosresultadosal
cuerpoprincipalhayqueasignarlasalidadelafuncinalasvariablesenlasque
queremosponerdichasalida,talycomosemuestraenlallamadaalafuncin.
Actividad 2: Toolbox de procesamiento de Seales

14

UniversidadNacionaldeSanAgustnArequipaMSc.EbertSanRomnCastillo
ProcesamientoDigitaldeSeales
2013A
ElSignalProcessingToolboxesunconjuntodeherramientasintegradas enel
entornodecomputacinnumricaMATLAB.Esteconjuntodeherramientases
compatibleconunaampliagamadeoperaciones deprocesamientodeseales,
desde la generacin de formas de onda para filtrar el diseo y su puesta en
prctica, el modelado paramtrico y el anlisis espectral. Este conjunto de
herramientasproporcionadoscategorasdeherramientas:
Procesamientodelasealdelneadecomandosfunciones
Unconjuntodeinterfacesgrficasdeusuariopara:
Diseodefiltrointeractivo
Sealdetrazadoyanlisis
Elanlisisespectral
Filtradodeseales
Anlisisdediseosdefiltros

Realiceunarchivomquegenerelassiguientessealesydescribaeltipofuncin.
sin(50)Hz+ sin(120)Hz, de 1001 puntos afectado por un ruido
aleatorio
Impulso de 1001 puntos
Escaln de 1001 puntos
Rampa o diente de sierra a 50Hz con 1001 puntos
Seal cuadrada de 50 Hz con 1001 puntos
Seal sinc de -5 a 5 con 1001 puntos
Funcin dirichlet de n=1:8
Lasiguientefuncin
T = 0:1/50E3:10E-3;
D = [0:1/1E3:10E-3;0.8.^(0:10)]';
Y = pulstran(T,D,'gauspuls',10E3,0.5);
plot(T,Y)

15

UniversidadNacionaldeSanAgustnArequipaMSc.EbertSanRomnCastillo
ProcesamientoDigitaldeSeales
2013A
I.

II.

DISCUSIN Indiquequecosasnosehanhecho,queefectosnosehanconsideradoy
cules podran ser las repercusiones en su trabajo. Indique adems que puntos o temas
podranhabersetocadoparamejorarestelaboratorio.
CONCLUSIONES Finalmente,de5observacionesysusrespectivasconclusiones

16

You might also like