Professional Documents
Culture Documents
SealesySistemas(66.74)
Prctica0:IntroduccinaMATLAB/OCTAVE
Elobjetivodeestaprcticaesproveeralalumnoconunabreveguasobrelautilizacin
bsicadeMATLABnecesariaparaeldesarrollodeestamateria,mediantedescripcinde
losaspectosbsicosdemanejodeesteprograma,funciones,archivos,etc.yunaserie
cortadeejerciciosquecubriranlosaspectosmselementalesexpuestos.Unamasamplia
coberturadeestostemasepuedeencontraren:
TheStudentEditionofMATLAB,TheMATLABCurriculumSeries,PrenticeHall
Eds.
TambinsepuedeutilizarelOctavecomoalternativaalMATLAB.ElOctaveesun
paqueteGNUinspiradoenelpaquetecomercialMATLAB,conelcualesprcticamente
compatiblehastalasversiones4.Estdisponibleenlasmquinasdeloslaboratorios
entrandoenlinux.Desdeunaxtermtipearoctave.Estoabrirlaventanadecomandos
delprogramaenlamismaterminal.ElOctaveestdisponibleparalasdistribucionesde
linuxmsimportantes.DependedelGnuplotparapoderrepresentargrficos.Alserun
softwareacogidoalaGPL(licenciapublicageneral)sucdigofuenteestadisponibley
puedeserampliadoymejoradoporcualquierusuario.
Manual:
http://www.octave.org/doc/octave_toc.html
http://www.cyc.ull.es/asignaturas/octave/ApuntesOctave/index.html
myprimer_tc.pdf
VariablesenMATLAB/OCTAVE
Losobjetosconlosquenosmanejaremosprincipalmenteenestamateriasonlos
escalaresyvectores.ParaMATLAB/OCTAVEestosdostipossernsimplementeun
casoparticulardematricesquesonlosobjetosbsicosenestelenguaje.
Ladefinicindeunavariableescalarserealizamediantelaasignacindeunaconstanteo
unaexpresinqueinvolucreoperacionesentreconstantesuotrasvariables.
Ej.:
A=20;
a=A/20+3
Losnombresdevariablessonsensiblesamaysculasyminsculas.En
MATLAB/OCTAVEelpuntoycomanotienesignificadosintcticocomoenPASCALo
C,sinoquesimplementeindicasilaoperacinarealizardebemostraronoelresultado
enpantalla.
Paradefinirunavariablevectorlasideasanterioressonaplicables,sinembargohayque
tenerpresentequeunvectoresunasecuenciadenmeros.Lamaneramssimplede
especificarestoesmediantelaescrituradelasecuencia,separandoloselementosdesta
porblancos,entrecorchetes:
Ej:
X=[1234]
Nohaydiferenciaentrelosnombresdeescalaresyvectores,MATLAB/OCTAVElos
distingueporelcontexto.Noesposibledefiniruntipoparalasvariablesconenlos
lenguajesCoPascal,porqueparaMatlabcualquiervariableessiempreundouble(8
bytes),exceptolasstrings,quesoncadenasdecaracteres.
Ej:lavariableXanteriorocupa32bytes.Encambiolavariabledefinidacomo
Y='hola';
soloocupa4bytes.Esposibleverellistadodetodaslasvariablesdefinidasenel
"workspace"deMatlab(oespaciodetrabajo)conelcomandowhos.Esposibleborrar
unavariabledel"workspace"conelcomando:
clearX
Elcomandoclearallborratodaslasvariablespresentesenelespaciodetrabajo.
Tampocoesnecesarioinicializarlosvectoresconladimensinquetendrn,puestoqueel
programaactualizaautomticamenteladimensinsiestaseagranda:
Ej:despusdeejecutarlasentenciaanterioresvlidohacer
X(5)=5;
Referenciaaelementosdeunvector:
Lainstruccinanteriormuestraademslamaneradeaccederaunelementodeunvector:
elnombredelvectordebeserseguidodeelndicedelelementoencuestinentre
parntesis.Observarqueelprimerelementotieneunvalordendiceiguala1.
Secuencias:eloperadordospuntos
ExistenoperadoresyfuncionesenMATLAB/OCTAVEquepermitendefinirsecuencias
deformasmsamigablesqueestetipodedefinicinexplcita:eloperador:genera
secuenciasdenmerosigualmenteespaciados,ascendentesodescendentes:
Ej.1:
Y=1:5;
generaelmismocontenidoqueeldelvectorXdelejemploanterior.
Lasintaxiscompletadeesteoperadores
inicio:paso:fin
quegeneraunasecuenciadenmerosquecomienzaeninicio,seincrementaenpaso
hastaalcanzarelvalorfin.
Ej.2:compruebequsecuenciasseformanenlossiguientescasos:
10:1:1
1:1:10
y=0:pi/4:pi
Variablesespeciales
MATLAB/OCTAVEdisponedeunaseriedevariablesmuytilesparaoperaciones
aritmticas:pi,Inf,NaN,eps,i,j
Probarlassiguientesexpresiones:
pi
eps
i
j
ElsignificadodelavariableNaNesNotaNumber.Lavariableepsmuestrala
resolucionnumericadeMatlab,mientrasquelasvariablesiyjtomanpordefectoel
valordesqrt(1).
ExistenfuncionesenMATLAB/OCTAVEapropiadasparadefinircasoscomunesde
vectores.Porejemploparadefinirunvectorde10ceros:
a1=zeros(1,10);%Defineunvectorfilade10elementos
a2=zeros(10,1);%Defineunvectorcolumnade10
elementos
(elsmbolo%esutilizadocomocomentario).Lainstruccinhelpseguidadelnombre
delafuncinproporcionaunadescripcinbastantecompletadelasfuncionesincluidas.
Utilcelaparaentenderelporqudelasdefinicionesanteriores,yparaconocerlamanera
deusarestasotrasfunciones:
ones
rand
Vectordeelementos1
Vectordeelementosaleatorios
linspace SecuenciadeNelementoslinealmenteespaciados
logspace SecuenciadeNelementoslogartmicamenteespaciados
Esposiblecombinartambinsecuenciasdevectoresparaformarotrosvectoresmayores:
Ej:
x=[9:1:1]
y=[0:10]
z=[yxyx]
Conociendoelfuncionamientodeloperador:podemostambinaccederamsde
unelementodelvectorporvez:
Ej:
x=10:10:50%Dacomorespuesta:1020304050
x(1)%Dacomorespuesta:10
x(1)=0%Dacomorespuesta:020304050(muestratodo
elvector)
x(1:4)=zeros(1,4)%Dacomorespuesta:000050
Ejercicios:Generarelvectorquecontengalassealesrepresentadasenlosgrficos
siguientes:
Operacionesentrevectores:
Lasoperacionesbsicasentrevectoresincluyen:
SumayResta:
Sedebetenerlaprecaucinquelosvectoresseandelasmismasdimensiones.La
excepcinaestareglaesquesepuedesumarorestarunescalaratodounvector,loque
seraunasimplificacinagenerarunvectorconstantedeamplitudigualaladelescalary
luegosumarloorestarlo.
Lasfuncionessiguientesseusanparadeterminarlasdimensionesdeunvector,ysonmuy
tilesalahoradedeterminarelerrorcometidocuandohaydosvectoresinvolucradosen
unaoperacin:
Size
indicalacantidaddefilasycolumnasdeunamatriz
Length
indicalalongituddeunvector
Multiplicacin:
Eloperador*enMATLAB/OCTAVEtieneelsentidodemultiplicacinentrematrices.
Entrevectoresesposibleefectuaresteproductosloentreunvectorfilayotrocolumna,
quetendrelsentidodeunproductoescalarentreambos,oquedarunamatrizenelcaso
demultiplicarunvectorcolumnaporunofila.Igualqueenelcasodelasumayresta,es
posibleefectuarlamultiplicacin(odivisin)deunvectorporunescalar,peroaqutiene
elsignificadousual.
AlutilizarMATLAB/OCTAVEennuestramateriafrecuentementeharemoslasuposicin
dequeunvectoreslasecuenciadeloselementosdeunafuncindevariablediscreta.Y
puestoquelosvectoressernutilizadoscomosifuesenfunciones,nosinteresarmsla
multiplicacinelementoaelemento,esdecircomosimultiplicramosfunciones.Para
estosedebeutilizareloperador.*(multiplicacinprecedidodepunto).Engeneralpara
cualquieroperadoresposibleprecederlodepunto,cambindoleelsentidoaoperador
elementoaelemento.Enestecasoesnecesarioquelasdimensionesdeambosvectores
concuerdenexactamente.Comoejemplodeladiferenciaentreambasoperaciones
mencionaremosqueesposiblehacerx.^2peronox^2.
Operadoresrelacionales:
Esposiblecomparardosvectoresdeigualesdimensionesounvectorcontraunescalar,
utilizandolossiguientesoperadores:
<
menor
<= menoroigual
>
mayor
>= mayoroigual
== igual
~= distinto
Elresultadoesunvectordeigualdimensincuyoselementosson1dondela
comparacinesverdaderao0dondeesfalsa.Lascomparacionesseefectanelementoa
elemento.
Existeunafuncinquepuedenutilizarseasociadaaestasoperaciones:lafuncin
find(x)devuelvecomoresultadounvectorcuyoselementossernlosndicesdel
vectorxparaloselementosdistintosdecero.
Ej.:
i=find(x<0);
x(i)=(1)*x(i);
Lasoperacionesanteriores"rectifican"alvectorx.
Operacionesconnumeroscomplejos
LosnumeroscomplejosestnpermitidosentodaslasoperacionesyfuncionesdeMatlab.
Probar:
X=[12;34]+i*[56;78]
Nota:losvaloresdeiyjpuedenserredefinidos,aunqueenesemomentoperdernsu
valordesqrt(1)
ademaselvalorsqrt(1)puedeserasignadoaotravariable:
ii=sqrt(1)
Otrasoperacionesaplicablesalosvectores:
Acontinuacinsepresentaellistadodelasfuncionesquemscomnmenteutilizaremos
enlamateria:
Max
valormximo
Min
valormnimo
Sum
sumadeloselementos
Prod
Productodeloselementos
Cumsum
sumaacumulativadeloselementos
Cumprod
Productoacumulativodeloselementos
Listadosdelibrerasdefunciones:
Utilizandolainstruccinhelphelpsepuedeobtenerunlistadodetodaslascategoras
defuncionesdeMATLAB.Porejemplosiseejecutahelpelfunseobtieneellistado
delasfuncioneselementalesdisponiblesenMATLAB.EnOCTAVEmediantela
instruccinhelpiseingresaenunhelpdetextoperointeractivo(una"infopage").
Endichapginalostextosqueaparecenmarcadoscon"*"tienenreferenciascruzadas,es
decirqueapretandosobreellos,esposibleingresarenunsubmen.Enlossubmens,la
lneasuperiortambintienereferenciascruzadas:apretando"P","N"o"U"esposible
ejecutarPrevious,NextoUp.LascategorasdeOCTAVEsonsimilares(perono
exactamenteiguales)alasdeMATLAB.
Ejercicios:
1. Hallarelvalormediodeunvector.(Tambinverlafuncinmean).
2. Hallareldesvostandarddeunvector.
3. Generarunaondatriangularapartirdeunacuadrada(ayuda:utilizarcumsum).
Graficacin:
MATLAB/OCTAVEesmuyamigableenestesentido.Elsiguienteesunlistadodelas
funcionesquemsamenudoutilizaremosenlamateria:
Plot
Graficalospuntosdeunvectorunindolosconlneas
Stem
Graficalospuntosdeunvectorcomosealdiscreta.En
OCTAVEesotraopcindelplot
Loglog
Idemplot,peroambosejestendrnescalaslogartmicas
Semilogx
Ejexlogartmico,ejeylineal
Semilogy
Inversodelanterior
axis
Defineloslmitesdelosejes
figure
Inicializaunanuevafigura.Conunargumentonumrico,se
posicionaenunadadafigurayaexistente
close
Cierraunafigura
Cadaunadeestasfuncionesadmiten1o2argumentos:enelcasodeutilizarsloun
argumento,porejemploplot(x),segraficanloselementosdelvectorencuestinvs.
susndices.Enungrficodeesteestiloelejexsiempretendrcomoprimerelementoel
1.Encambiosisegraficaplot(t,x)segraficarnlospuntoscorrespondientesalos
paresordenadosentyx,pudiendoentoncesrepresentarsefuncionesparavaloresde
t<1.
Ejercicio:
Grafique
,para
.Utilicepasosdexenelgrficotalesquela
funcinaparezcalomscontinuaposible.
Funcionesadicionalesparagraficacin:
Ttulosynombresdeejes:
Despusquesehadibujadoelgrficoesposiblerotularlasvariablesinvolucradasydarle
unttulogeneral,mediantelasfunciones
title
xlabel
ylabel
EnOctavehacefaltauncomandoadicionalpararepresentarlostitulosdelosejessobre
ungraficoqueyaestenpantalla:replot.
Tambinesposiblefijarelrangodelosvaloresdelosejesconelquesemuestraun
dibujomedianteaxis.
Distintostiposdetrazos:esposiblerealizargrficoscontrazosdistintos,como
porejemplopunteado,circulos,asteriscos,etc.Porejemplo,plot(t,x,o)
graficarlospuntoscorrespondientesalosparesordenadosentyxcomo
circulitosnounidosporningunalnea.helpplotproporcionams
informacinsobreestetercerargumentoopcionaldelafuncin.
Ejercicio:
Grafiquelas8racesdelaecuacin
racesdeunpolinomio).
.(Ayuda:lafuncinrootscalculalas
Subplot
:
Esengeneralnecesariomostrarmsdeungrficoenlamismafiguraparasu
comparacin.Estosepuederealizarmediantelafuncinsubplot.Estainstruccin,que
debeejecutarseantesdelagraficacin,nospermitecrearunamatrizdegrficosenla
figurayposicionarelsiguientedibujoenunodeellos.
Ejercicio:
Realice4grficosenlamismafiguradelasfunciones
.
Msde1figura:
,con
;y
Paraquelosgrficosserealicencadavezenunafiguradiferente,antesdeejecutarlas
instruccionescorrespondientessedebeejecutarlainstruccinfigure.Lainstruccin
closeallcierratodaslasfigurasexistentes.
Mediantelafuncionholdpodremossuperponermsdeuntrazadoenlapantalla.Se
desactivaconholdoff.
Archivos.m
y
.mat
,ysentenciasdecontroldeflujo:
Cuandolacomplejidaddelasinstruccionesnecesariaspararealizarunaoperacin
aumenta,esmejoragruparlasenunidadeslgicasoarchivosejecutablespor
MATLAB/OCTAVEcomounanicainstruccin.Estoselogramediantelosarchivos
*.m,loscualesdebenserescritosmedianteuneditordetextoysalvadosconunnombre
ylaextensin.m.Elprogramaesinvocadomedianteelnombreconelquefuesalvado
(sinextensin).
Nota1:EnlabarradetareasdeMATLABlaopcin:File,New,Mfileinvocaauneditor
detexto.Enlaversin4.x,eselNotepaddeWindows,mientrasqueenlaversin5.xel
editorvieneincorporadoalMatlab.
Nota2:Losarchivoscreadosdeestamaneraslopuedenserinvocadosdesdeel
directorioenelquefueronsalvados.Esaltamenterecomendableorganizarunaestructura
dedirectorioscoherente,porejemploguardartodoslosarchivos*.menundirectorio
C:\usu\matlab.ParaqueMATLABtomeestedirectoriocomodirectorioactualde
trabajodebeejecutarselainstruccincdc:\usu\matlab.
Archivos.m
yfunciones
EsposibledefinirqueunarchivoquecontieneunapiezadecdigodeMatlabse
considereunafuncinsidichocodigocomienzaconelencabezadofunction.Endicho
encabezadoestarademsdefinidalasintaxisdelafuncin,esdecir,susentradasy
salidas.Porejemplolafuncinsiguiente:
function[suma]=sumar(x,y)
suma=x+y;
return;
devolverlasumadedosnumeros,losqueseingresanentreparentesisenlallamadaala
funcion.Estecdigodebesalvarsecomosumar.mparapoderserejecutado.
Ladiferenciaentreunscriptquenoesfuncinyunoquesloes,estprincipalmenteen
queenlasfuncioneslasvariblessoninternas(noformanpartedelworkspace),yson
automticas(desaparecendespusdeejecutadalafuncin).Encambiounscriptqueno
estencapsuladoenunafuncindejalosvaloresfinalesquetomanlasvariablesenel
workspacealterminar.
Sentenciasdecontroldeflujo:
Enestelenguajesedisponende3estructurasbsicasdecontroldeflujo:
1. Ciclosfor:Laestructurabsicadeestainstruccines:
fori=expresin
sentencias;
end
Ejercicio:
Realicemedianteestaestructuraladefinicindeunvectorxde10elementos
todosceros.
Nota:Elejercicioanteriorseraequivalenteaejecutarlainstruccinnicax=
zeros(1,10);queesmuchomsrpidaqueelciclopropuestoenelejercicio
(porejemploprobarelmismoejerciciocon10000elementos).Estonosmuestra
queenloposiblehayquetratardeevitarlautilizacindeciclosyestructurassi
existeunafuncinvecotrialyapredefinidaquepermitehacerlomismo.
2. Cicloswhile:Laformageneraleslasiguiente:
whileexpresin
sentencias
end
Estetipodecicloesabierto,esdecirelfindellazoquedadeterminadoenel
momentodelaejecucindelassentenciascorrespondientes.
Ejercicio:
Calcularlafuncin
mediantesudesarrolloenserie
sumandotrminosmientrascadatrminonoseamenorque
.Ingreseel
puntoenelcualrealizarelclculomediantelainstruccininput.
3. Sentenciasif:Siguenlasiguienteestructura:
ifexpresin1
sentencias1
elseifexpresin2
sentencias2
else
sentencias3
end
Lospuntossuspensivossignificanquelassentenciaselseifpuedenrepetirse
tantasvecescomoseanecesario.Estassentenciasoelelsepuedenestar
ausentes,peronoelendfinal.
Instruccionessaveyload
:
Esposibledespuesdehabergeneradounavariablesalvarsuvalorenunarchivopara
volveracargarlomstarde:
savetmpx
guardalavariablexenunarchivollamadotmp.mat.Sinoseindicanombrede
variablesacontinuacindelnombredelarchivo,todaslasvariablessonsalvadas.Con
loadtmp
sevuelvearecuperarlainformacinquefuesalvadaentmp.mat.
Losarchivosdedatos(.matenMATLAB)enOCTAVEtienenlaextension.octyson
archivosdetexto.
Algunoscomandosgenerales:
Acontinuacinselistanunaseriedecomandosgeneralestiles.Lostresprimeros
conformanlasherramientasbsicasparaseguiraprendiendomssobreMatlab.Los
ltimossonnecesariosparalaubicacindelosarchivosydelosdirectoriosdetrabajo,
etc.
lookfor
Buscatodaslasfuncionesquecontienenunaciertapalabra
help
Brevedescripciondeusodeunafuncion.
which
Indicaeldirectoriodondeseencuentraunafuncin
cd
Cambiadedirectorio
dir(ls)
Listaelcontenidodeundirectorio
pwd
Daelnombredeldirectoriocorriente
path
Listadodetodoslosdirectoriosqueestnenelpathde
Matlab
Directoriodetrabajoenlinuxdesdeoctave:
AlgunoscomandosdelshelldeUnixestnimplementadosenOCTAVE/MATLAB.El
comandopwdindicaelpathcompletodeldirectorioactualdetrabajo;lsmuestraun
listadodetodoslosficherosdeesedirectorio;ycd..cambiaaldirectorio
inmediatamentesuperioralactual(uotrocualquieraqueseespecifiqueenlugardelos
dospuntos).HayquetenerencuentaqueeldirectorioactualparaOCTAVE/MATLAB
seraqueldesdeelcualseinvococtavesinosehahechoningunaoperacindecambio
dedirectorios.
SitiowebdeSealesysistemas:
Duranteeltranscursodelamateriavariostiposdedatosnecesariospararealizarlos
trabajosprcticos,oinformativos(comolostextosdeestasguas,parcialesycoloquios
anteriores)estndisponiblesen:
http://www.fi.uba.ar/materias/6607
Serecomiendaconsultarloperidicamenteparaenterarsenoticias,modificacionesde
calendario,ltimasactualizacionesdelasguas,notasdeparcialesyfinales,etc,etc,etc.