You are on page 1of 13

Lastmodified:TueMar1309:42:53ART2007

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.

You might also like