programacion_matlab
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