programacion_matlab

Upload: marc-ll

Post on 03-Jun-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/12/2019 Programacion_Matlab

    1/37

    PROGRAMACINDEMATLAB

    UNIVERSIDADNACIONALDEINGENIERIA

    FACULTADDEINGENIERIAELECTRICAYELECTRONICA

    KRAQ

  • 8/12/2019 Programacion_Matlab

    2/37

    PROGRAMACINDEMATLAB

    Funciones de conversin

    int2str

    num2str

    str2double

    str2num

    mat2str

    Convierte un numero entero en cadena de caracteres

    Convierte un numero real en cadena de caracteres, concuatro cifras decimales por defecto

    Convierte una cadena de caracteres , que seria una representacinde caracteres ASCII de un valor real o complejo a un nmero dedoble precisin

    Convierte una cadena de caracteres , que seria una representacinde caracteres ASCII de un valor numrico

    Convierte una matriz a cadena de caracteres

    >> num2str(pi)ans =3.1416

    >> num2str(pi,8)ans =3.1415927

  • 8/12/2019 Programacion_Matlab

    3/37

    0 10 20 30 40 50 60 70 80 90 1000

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    1

    DESVIACION = 0.27799

    PROGRAMACINDEMATLABq=rand(1,100);

    dsv=std(q);desv1=num2str(dsv);plot(q);title(['DESVIACION = ',desv1]);

    a='8';

    st=str2num(a);z=st+15z =

    23

  • 8/12/2019 Programacion_Matlab

    4/37

    PROGRAMACINDEMATLABOperadores relacionales

  • 8/12/2019 Programacion_Matlab

    5/37

    PROGRAMACINDEMATLAB

    Operadores lgicos

    Operador Ejemplo

    & A&B

    | A|B

    ~ ~A

    xor Xor(A,B)

  • 8/12/2019 Programacion_Matlab

    6/37

    Comoyasemencionenelprimercasotedevuelveunvalornumrico.Enelsegundocasoeltextotecleadocomorespuestaseleeysedevuelvesinevaluar,conloquesealmacenalacadenanombre

    PROGRAMACINDEMATLAB

    LecturayescriturainteractivadevariablesComandodeentrada:input

    PermiteescribirunmensajeenlalneadecomandosdeMATLAByrecuperarcomovalorderetornounvalornumricooelresultadodeunaexpresintecleadaporelusuario.

    Despusdeimprimirelmensaje,elprogramaesperaqueelusuariotecleeelvalornumricoolaexpresin.

    >> n=input('Teclee el nmero de ecuaciones: ')

    >> nombre=input('Cmo te llamas?','s')

  • 8/12/2019 Programacion_Matlab

    7/37

    losvectores

    PROGRAMACINDEMATLAB

    LecturayescriturainteractivadevariablesComandodesalida:disp

    Permiteimprimirenpantallaunmensajedetextooelvalordeunamatriz,perosinimprimirsunombre.Enrealidaddispsiempreimprimevectoresy(omatrices

    Lacadenadecaracteres

    sonuncasoparticularde

    z)disp(' x ydisp(randn(5,3))

    x0.3807-1.5077-1.09790.0519

    -0.4202

    y-0.83390.1347-0.0013-1.3061

    0.4361

    z0.19180.25710.8237

    -1.1328

    0.7079

    Sepuedenmostrardatosymatrices

  • 8/12/2019 Programacion_Matlab

    8/37

    Comandodesalida:disp

    Ejercicios:

    1. DiseeunprogramaenelcualdadaunamatrizAcuadrada cualquiera de

    tamao n ingresado en por el usuario, permita mostrar sus autovalores.

    2. Ingrese los parmetros A, f y el tiempo de duracin de la siguiente seal;grafquelo y muestre el valor medio de dicha seal

    Lecturayescriturainteractivadevariables

    PROGRAMACINDEMATLAB

    Puedemostrarmltiplesitemsenunamismalnea

    >>x=[1234];

    >>disp(['Losvaloresdexson: ',num2str(x),'vieneaserunarray'])Losvaloresdexson: 1 2 3 4vieneaserunarray

  • 8/12/2019 Programacion_Matlab

    9/37

    Algunos otros comandos utilizadospause: la ejecucin del programa se detiene en esa lnea hasta dar a una tecla

    return: Interrumpe en esa lnea de ejecucin de la funcin, regresando adonde se le hubiera llamado. Termina un programa si est en la funcin

    principal

    error(mensaje) : Escribe el mensaje en pantalla y finaliza al ejecucin del m-fichero, regresando a donde se le llama (consola u otra funcin)

    PROGRAMACINDEMATLAB

    sprintf : Devuelde los datos en una variable cadena,muy parecido a su

    equivalente en C

    >> temp=14; hum=98;>> sprintf('La temperatura en Lima es %g C con humedad de %g porciento',temp,hum)ans =La temperatura en Lima es 14 C con humedad de 98 porciento

  • 8/12/2019 Programacion_Matlab

    10/37

    Espaciocdigofuente:EDITOR(M-FILES)Espacioparaejecutar :VENTANADECOMANDOS

    PROGRAMACINDEMATLABIntroduccinalaprogramacin

    Todolenguajedeprogramacinrequieredeunespaciodetrabajoms

    cmododondeescribirtodaslasinstrucciones.Cuandoescribimosenelintrprete,sinosequivocamosenalgoyanopuedes retroceder,necesitamostambincrearfunciones,etc.Porlotantorequerimosunespaciodondeescribirelcdigofuenteyunespaciodondeseejecute.

  • 8/12/2019 Programacion_Matlab

    11/37

    TiposM-files:

    ArchivosScriptArchivosfunction

    Noolvidarqueparacomentariosenla

    programacinsedebehacecon%

    ArchivosscriptsSetratadeuneditordetextoBasadoenunconjuntodesentenciasSeguardadondesequiere,depreferenciaenlacarpetadetrabajoSeguardaconelnombrequequieraUd.Suextensines*.m.Lasvariablescreadasenestearchivousanelworkspace.Tambinsepuedellamardesdelaventanadecomandos.

    PROGRAMACINDEMATLAB

    Introduccinalaprogramacin

  • 8/12/2019 Programacion_Matlab

    12/37

    Ejemplo

    function[f,promedio]=mifuncion(x,y)f=y.*(1-y)+x;promedio=sum(f)/length(x);

    Recordarquesumdevuelvelasumadeelementosy

    lengtheltamao

    PROGRAMACINDEMATLAB

    IntroduccinalaprogramacinDefinicindefuncionesLaprimeralneadeunficherollamadoname.mquedefineunafuncintienelaforma:

    Dondenameeselnombredelafuncin.Entrecorchetesyseparadosporcomasvanlosvaloresderetorno(siemprequehayamsdeuno),yentreparntesistambinseparadosporcomasvanlosargumentos

    Presentalascaractersticasbsicasdeunafuncin.

    Tienenquetenerelmismonombredelarchivo*.m

  • 8/12/2019 Programacion_Matlab

    13/37

    Scriptsvs.Funciones

    PROGRAMACINDEMATLAB

  • 8/12/2019 Programacion_Matlab

    14/37

    functiony=z(n)globala

    y=n*a;

    functiony=f(x)globalaa=24;k=z(4);y=2*x*k;

    Lasvariablesglobalespuedensermostrarseenel

    workspacemediante>>globalvariable

    PROGRAMACINDEMATLAB

    VariablesLocales

    Comoentodolenguajedeprogramacinlasvariableslocalessedefinensloensuespaciodetrabajo,nose pudeapreciarenelworkspace

    VariablesGlobales

    Enladefinicindeunafuncin(aligualqueencualquierlenguajedeprogramacin)losnombresdelasvariablessonmudos,esdecir,seentiendenydefinennicamentedentrodelfichero,sinrelacinconlasvariablesexteriores.Lanicaexcepcinlaformanlasvariablesdeclaradascomoglobalesenamboscontextos..

    globalvariable1variable2

  • 8/12/2019 Programacion_Matlab

    15/37

    PROGRAMACINDEMATLAB

    functiony=recta(x)a=8;%pendientey=a*x+b;%valordelarectaend

    >>b=4b=

    4>>y1=recta1(3)???Undefinedfunctionorvariable'b'.

    functiony=recta(x)globalba=8;%pendientey=a*x+b;%valordelarectaend

    >>globalb>>whosbName Size Bytes Class Attributes

    b 1x1 8 double global

    >>b=12

    b=12>>y1=recta(3)y1=

    36

    functionresultado=func(x,y)globalee=sqrt((x+y)/2);resultado=x^2+y^3+e;

    end

  • 8/12/2019 Programacion_Matlab

    16/37

    :

    Ejercicio:Calcularladistanciayelpuntomedioentredospuntosenelespacio(hacerloporvectores)

    PROGRAMACINDEMATLABEstructurasdecontroldeFlujo

    Todoslosalgoritmostienestresestructurasbsicas:

    1. Estructurasecuencial2. Estructuraselectiva3. Estructuraiterativa

    1. EstructuraSecuencial:

    Esaquellaenlaquelaaccin(instruccin),sigueaotraensecuencia.

  • 8/12/2019 Programacion_Matlab

    17/37

    Permitenrealizarunauotraoperacinsegnsecumplaonodeterminadacondicin.Lassiguientesfigurasnosmuestrantresposiblesformasdebifurcacin.

    2. EstructuraSelectiva:

    PROGRAMACINDEMATLAB

  • 8/12/2019 Programacion_Matlab

    18/37

    Sentenciasifelseanidadas quenocumplaningunadelascondicionesquesehan

    chequeado

    Unaobservacinimportante:Lacondicindelif puedeserunacondicinmatricialdeltipoA==B,dondeAyB sondelmismotamao.Paraquelacondicinsecumplaes

    necesarioqueseanigualdosadostodosloselementosdelasmatricesAyB.

    PROGRAMACINDEMATLAB2. EstructuraSelectiva:

    Sentenciasifelse

    Lasentenciaelsepuedeseromitida:sinoestpresentenosehacenadaencasode

  • 8/12/2019 Programacion_Matlab

    19/37

    PROGRAMACINDEMATLAB2. EstructuraSelectiva:

    Sentenciasifelse

    Ejercicios1. Calcularlassolucionesdelaecuacina*x^2+b*x+c=0,dondea~=0.2. Calcularelvalorabsolutodedosnmeroscualesquiera(sinusarfuncin).3. Generarunnmeroaleatorioentre-100y100,siespositivomenorque30es

    pequeo,siespositivoentre30y80esmediano,siespositivoentre80y100esgrande.

    4. Calcularelreadeuntringuloconociendosuslados.Mostrarsuexistencia

  • 8/12/2019 Programacion_Matlab

    20/37

    PROGRAMACINDEMATLAB2. EstructuraSelectiva:

    Sentencias swith.case

    Ejercicio1. Disearunprogramaqueingreseselnumerodelasemanaytedevuelvaelnombre

    de semana.2. Hacerunmultiplexordefunciones

  • 8/12/2019 Programacion_Matlab

    21/37

    Conocidastambincomoestructurasrepetitivas,nospermitenrepetirunasecuenciadeinstruccionesunnmerodeterminadodeveces.

    3. EstructuraIterativas:

    PROGRAMACINDEMATLAB

  • 8/12/2019 Programacion_Matlab

    22/37

    Sentenciawhile

    Dondecondicionpuedeserunaexpresinvectorialomatricial.Lassentenciassesiguenejecutando.Lassentenciassesiguenejecutandomientrashayaelementosdistintosdeceroencondicion,esdecirmientrashayaalgnoalgunoselementostrue.Elbucleterminacuandotodosloselementosdecondicionsonfalse(esdecir,cero)

    Lasestructurasdelbuclewhile es

    muysimilaraladeC/C++/java

    3. EstructuraIterativas:

    PROGRAMACINDEMATLAB

    Ejercicio1. Calculardelasumatoria de1^2+2^2+3^2+4^2+...n^22. Calcule:

    3. Calculelasumadelosnmerosenterosempezandoen1,

    hastaquelasumaexcedade100

  • 8/12/2019 Programacion_Matlab

    23/37

    Losvaloresdeivande1anvariandodeunoenuno,sino

    seespecificaelpaso.ElvectorValoresesunvectorcon

    losdistintnosvalores quetomarlavariablei

    PROGRAMACINDEMATLAB3. EstructuraIterativas:

    SentenciaforLasentenciaforrepiteunconjuntodesentenciasunnmeropre-determinadodeveces.LasentenciafordeMATLABesmuydiferenteynotienelageneralidaddelasentenciafor deC/C++/Java

  • 8/12/2019 Programacion_Matlab

    24/37

    Enelsiguienteejemplosepresentaunaestructuracorrespondienteadosbuclesanidados.Lavariablejeslaquevaramsrpidamente

    Porcadavalordei,jtomatodossusposiblesvalores

    PROGRAMACINDEMATLAB3. EstructuraIterativas:

    Elcasomsgeneraldelasentenciafor,estomandoencuentaelincremento,elbucleseejecutaporprimeravezdesdei=n,yluegovareduciendode0.2en0.2hastallegarasermenorque1.

  • 8/12/2019 Programacion_Matlab

    25/37

    EnlaqueiesunvectorquevatomandoencadaiteracinelvalordeunadelascolumnasdeA.Cuandoseintroduceniterativamenteenlalneadecomandos,losbuclesforseejecutanslodespusdeintroducirlasentenciaendqueloscompleta

    Ejercicios1. Lasumatoriadesdex0hastaxfdelafuncinx^2-3x+212. Elfactorialdeunnumero

    PROGRAMACINDEMATLAB3. EstructuraIterativas:

    Laltimaformadeintersdelbucleforeslasiguiente(Aesunamatriz)

  • 8/12/2019 Programacion_Matlab

    26/37

    %Breakclear;clc;DAT=[00000123456765432100000];

    fori=1:length(DAT)ifDAT(i)~=0POS=i;break;

    endend

    PROGRAMACINDEMATLAB

    SentenciaBreak

    AligualqueenC/C++/Java,lasentenciabreakhacequeseterminelaejecucindelbuclefory/owhilemsinternodelosquecomprendeadichasentencia

    Dada una matriz aleatoria Aencontrar la posicin de su primerelemento igual a cero

  • 8/12/2019 Programacion_Matlab

    27/37

    clear;

    clc;cont=0;while1

    cont=cont+1;alt=randi(6);disp([num2str(cont)'

  • 8/12/2019 Programacion_Matlab

    28/37

    Script:------------------

    ------------------a=funcion1;

    ------------------------------------b=funcion2;

    ------------------

    c=funcion3;

    ------------------------------

    Funcion2()------------------------------

    Funcion3()

    ------------------------------

    Ejercicios1. Apartirdelfactorialdeunnmero,calcularelcombinatoriodemtomadosdenenn

    Lasfuncionessoninvocadasdesde

    elcuerpodeunprograma

    PROGRAMACINDEMATLAB

    IntroduccinalaprogramacinLlamadodefuncionesenlamismacarpetadetrabajo

    Funcion1()

  • 8/12/2019 Programacion_Matlab

    29/37

    %Funcinprimariafunction[avg,med]=mediamediana(u)%Encuentralamediaylamediana%conlasfuncionesinternas.n=length(u);avg=media(u,n);

    med=mediana(u,n);

    functiona=media(v,n)%Subfunction%Calculalamediaopromedio.a=sum(v)/n;

    functionm=mediana(v,n)%Subfunction%Calculalamediana.w=sort(v);ifrem(n,2)==1

    m=w((n+1)/2);else

    m=(w(n/2)+w(n/2+1))/2;

    end

    Agregarladesviacin

    estndar

    functionA(arg1)...functionAa(a1,a2)

    ...functionAa1()

    ...

    endend....functionAb()

    ...functionAb1()

    ...end

    ...functionAb2()

    ...end

    ...end....

    end

    PROGRAMACINDEMATLABSub-funciones

  • 8/12/2019 Programacion_Matlab

    30/37

    >>varsin=@sin

    >>varsin(pi/2)ans=

    1

    >>trifun={@sin,@cos,@tan}trifun=

    @sin @cos @tan

    >>trifun{3}(pi/4)ans=

    1.0000

    >>I=quad(@sin,0,pi)I=

    2.0000

    PROGRAMACINDEMATLAB

    Manipuladordefunciones (functionhandles@)

    Matlabtieneunaherramientaparaasignarfunciones(aunqueseramscorrectollamarlosmtodos)avariables.SiutilizamoslosFunctionhandlesparaasignarunafuncinaunavariablepodemosutilizarlafuncinsinhacerlodirectamentealigual

    queoperamoslosargumentosmediantevariables.UnFunctionhandlesedenotaconlaletra@

  • 8/12/2019 Programacion_Matlab

    31/37

    >>foo2=@(x,y)sin(x)*cos(y)foo2=

    @(x,y)sin(x)*cos(y)

    >>foo2(6,2)

    ans=0.1163

    >>quad(@(x)besselj(2.5,x),0,4.5)ans=

    1.1178

    Lafuncinesannimaporquenotieneningnnombrefijo,seguir

    siendolamismafuncinindependientementedelnombrede

    lavariable.

    PROGRAMACINDEMATLAB

    FuncionesannimasLasfuncionesannimasconstituyenunaformamuyflexibledecrearfuncionessobrelamarcha,yaseaenlalneadecomandosoenunalneacualquieradeunafuncinounfichero*.m.Laformageneraldeunafuncinannimaeslasiguiente:

    fhandle=@(argumentos)sentencia_ejecutable

  • 8/12/2019 Programacion_Matlab

    32/37

    eval(expresion) expression=[string1,int2str(var),string2,...]siendo

    x=1:5;y=eval('(x+2)./x');strf='sin(x*(pi/2));z=eval(strf)y=

    3.0000 2.0000 1.6667 1.5000 1.4000

    z=1.0000 0.0000 -1.0000 -0.0000 1.0000

    forn=1:10eval(['A',num2str(n),' =magic(n)'])

    end

    Probarlossiguientescdigos

    ford=1:5s=['loadAugust'int2str(d)'.mat'];eval(s)

    end

    forn=1:10

    eval(['P',int2str(n),'=n.^2'])end

    PROGRAMACINDEMATLAB

    Lafuncineval

    EvalaunacadenaquecontieneunaexpresinMATLAB,sentenciaollamadaafuncin

  • 8/12/2019 Programacion_Matlab

    33/37

    Sepuedeevaluarunafuncindefinidaenlamismacarpetadetrabajo

    colocandoelnombrecomostring

    functiony=fcn1(x)y=x*exp(-x^2);end

    >>feval('fcn1',2)ans=

    0.0366

    PROGRAMACINDEMATLAB

    Lafuncinfeval

    Evalaelmanejadordefuncinusandoelargumentox1,x2,x3,,xn

    [y1,y2,...]=feval(fhandle,x1,...,xn)

    [y1,y2,...]=feval(fname,x1,...,xn)

    >>feval(@(x,y)sin(x)*cos(y),pi/6,pi/3)ans=

    0.2500

    >>feval(@(x)x*exp(-x^2),2)ans=

    0.0366>>feval(@(x,y)x*y^-2+x^3*y+2,2,3)ans=

    26.2222

    >>[a,b]=feval(@size,[123])

  • 8/12/2019 Programacion_Matlab

    34/37

    PROGRAMACINDEMATLABMtodosnumricos

    Sonlaramadelamatemticaqueseencargadedisearalgoritmos paraatravsdenmerosyreglasmatemticassimples,simularprocesosmatemticos mscomplejosaplicadosaprocesosdelmundoreal.

    MtododelBiseccin

    Consideremos una funcin no lineal f(x) continua en (a; b), tal que sea intervalosolucin, es decir f(a) * f(b) debe ser menor que cero.

    1. Halla el pto medio en el intervalo entrea y b.

    1. Hallar f(c).2. Analizar: Si f(a)xf(c) > 0 , entonces a=c.

    Si f(a)xf(c) < 0 , entonces b=c.4. Se repite con el nuevo intervalo solucinhasta llegar a una precisin deseada.

  • 8/12/2019 Programacion_Matlab

    35/37

    PROGRAMACINDEMATLABMtodosnumricos

    Mtododelpuntofijo

    Aproxima lasolucindelaecuacinx=g(x)empezandoconunvalorinicial departidap1,ylafrmuladerecurrenciaes:

  • 8/12/2019 Programacion_Matlab

    36/37

    PROGRAMACINDEMATLABMtodosnumricos

    MtododelNewton-Raphson

    Permiteaproximar aunarazdedef(x)=0apartirdeunvalorinicialp1,mediantelafrmuladerecurrencia.

  • 8/12/2019 Programacion_Matlab

    37/37