parte2

56
Programación en MATLAB Vlir – Componente 8

Upload: guestef174c

Post on 27-Dec-2014

1.676 views

Category:

Technology


5 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Parte2

Programación en MATLABVlir – Componente 8

Page 2: Parte2

CAPITULO - 2 2

InicializaciInicializacióón de Matricesn de Matrices

InicializaciInicializacióón de matricesn de matricesA=[[…];[…];[…];…];A=[… ;…;…]PracticaPracticaA=[[2 3 4];[1 3 5];[4 6 1]] B=[[1 7 -1];[0 -2 3]]

Que retorna?Que retorna?[X1 X2]=size(A); X2=length(B); X3= det(A);A1=diag(A); A2=ones(fil,col); A3=zeros(fil,col);eye(fil,col); A(fil,col)=3; B=A(3,: );triu(A);tril(A);

Page 3: Parte2

CAPITULO - 2 3

Giros de una matriz ??Giros de una matriz ??

flipud(A);fliplr(A);rot90(A,num);

PracticaPracticaX = 1 2 3 Resultado 3 2 1

4 5 6 6 5 4B(:,2)=[]; Que haceQue hace ??flipud(X); fliplr(X);rot90(X,1);rot90(X,2);rot90(X,3)

Page 4: Parte2

CAPITULO - 2 4

Operaciones Operaciones ……

C=A’ ; D= A*B; E=B*A; F=inv(C);G=C*F; H=C.*F ; Cual es la diferencia ??

Page 5: Parte2

CAPITULO - 2 5

Operaciones Operaciones ……

⎪⎪⎩

⎪⎪⎨

=+−=−−+−

=+−−=+−−

43dcb02dc2ba

1cba1d3c3b2a

][][][ bxA =∗

][\][][])([][ bAbAInvx =∗=

Page 6: Parte2

CAPITULO - 2 6

Repaso

Entorno de trabajoComandos básicosComandos de matrices

Crear matrizManipulación de matricesFunciones con matrices

Page 7: Parte2

CAPITULO - 2 7

Agenda

Crear carpeta de trabajoOperadores de relaciónOperadores lógicosFunciones de FechaPolinomiosArchivos *.m Ejercicio del día

Page 8: Parte2

CAPITULO - 2 8

Como crear carpeta ??

[e m im] = mkdir curso[e m im] =mkdir( 'c:\matlab701\work‘ , 'curso_matlab‘ )[e m im] =rmdir cursocd c:\matlab701\work\curso_matlabcurso_matlab%[%[S,M,MIDS,M,MID] = ] = COPYFILE(fuenteCOPYFILE(fuente, destino), destino)%[%[S,M,MIDS,M,MID] = MOVEFILE] = MOVEFILE (fuente, destino)(fuente, destino)diarydiary clasesclasesA=[2 3 4 A=[2 3 4 --1; 2 9 0 3;1 2 4 0;2 0 5 1];1; 2 9 0 3;1 2 4 0;2 0 5 1]; B=[A(1:4,1:3)];C=[2 1 0;1 1 2];B=[A(1:4,1:3)];C=[2 1 0;1 1 2];D=[B ;C(1,:)]D=[B ;C(1,:)]savesave matricesmatrices

Page 9: Parte2

CAPITULO - 2 9

Operadores RelacionalesOperadores Relacionales

> < ==>= <= ~=

⎥⎥⎥

⎢⎢⎢

⎡−

−=

365120

101A

Practica

2>=⎥⎥⎥

⎢⎢⎢

111010000

A

find(A>=2) =?

Page 10: Parte2

CAPITULO - 2 10

Operadores LOperadores Lóógicosgicos

A&B A|B ~A

And(A,B) Or(A,B) Not(A) Xor(A,B)

Page 11: Parte2

CAPITULO - 2 11

Practica Practica ……

A(2,2:3); A(3,:);A(end,:); A(1:2,:);A([1 3 4],:); sqrtm(A);isequal(A,B)

Convertir los elementos múltiples de 2 del vector en -3

Page 12: Parte2

CAPITULO - 2 12

Fecha y HoraFecha y Hora

clock : Año, mes, dia, hora, min, seg.now : lo mismo pero en númerodate ,datenum(clock): fechascalendar(y,m) : calendario

n=datenum('09-Nov-2006'); ans=732990n=datenum(2005,11,9); ans=732625n=datenum(‘9.11.2005’,’dd.mm.yyyy’); ans=732625calendar(2000,5)

Page 13: Parte2

CAPITULO - 2 13

PolinomiosPolinomios

065:)( 3 =−+ xxxqroots(p);polyval(p,2);conv(p,q);Polyder(p);

01068:)( 24 =−+− xxxxp

Page 14: Parte2

CAPITULO - 2 14

Otras Funciones Otras Funciones ……

exist(‘var’): return 0 si no existeisnan(A); si hay valores indeterminadosisinf(A);si hay valores infinitosisempty(var); si la variable es nulaischar(var); si es cadena

Prueba: Encontrar la posición en donde existe un valor indeterminado en la matriz XX=[1 2 3;NaN 2 inf]

Page 15: Parte2

CAPITULO - 2 15

Archivos *.m

Page 16: Parte2

CAPITULO - 2 16

Editor de MATLAB

Page 17: Parte2

CAPITULO - 2 17

EDITOREDITORTodo archivo *.m debe llevar el mismo nombre que el de la función principal.Ejemplos:Archivo: programa01.mfunction programa01

disp(‘Hola mundo’);Archivo: programa02.mfunction programa02(x,y)

z=x+y;disp(‘La suma de ‘),disp(x),disp(‘con’),disp(y),disp(‘es ’),disp(z);

A QUE SE LE LLAMA SCRIPT EN MATLAB ??

Page 18: Parte2

CAPITULO - 2 18

Importante

Los nombres de las funciones y variables deben de comenzar con una letra mayúscula o minúscula y no deberá contener símbolos especiales a excepción del _que es valido siempre y cuando no este al inicio, la misma regla se les aplica a los números.

Ejemplo:

Hola.m mi_primer_programa.m programa02.m programa_02.m

Page 19: Parte2

CAPITULO - 2 19

Script --- FuncionesX=[inf NaN 1 2 3 5]X(find(isnan(X)))= -3X(find(isinf(X)))=-1Y=2*Xplot(X,Y);hold onstem(X,Y);hold off

function f(X)Y=2*X;plot(X,Y);

function [X Y Z] = Funcion(a,b,c,d)

X= 0:0.1:2*pi

aproxSeno.m

practica02.m

Page 20: Parte2

CAPITULO - 2 20

Mis primeros programas

function programa03(t) x=sin(t); y=cos(t);

plot(x,y),title(‘función parametrizada’);

Page 21: Parte2

CAPITULO - 2 21

function z=programa04(n)echo onclc;x=rand(3,4);y= x(abs(x)<0.4);[fil,col]=find(abs(x)<n);z=x(find(abs(x)<n)); disp('Matriz generada'); disp(x);disp('valores que cumplen condición');disp(z);disp('ubicación en la matriz');disp([fil,col]);end % tresFuncion.m

ECO.m

Page 22: Parte2

CAPITULO - 2 22

RESUMENlayout ;set path ;workspace; comand windowsVector: Inicialización de vector, Operaciones.Matrices : Inicialización, operaciones, funciones.

X1 = [1 2 3 4 0 -1]X2 = 0:8X3 = 0:0.1:8X4 = [1;2;3;3;2;0]X5 = [1+2i 2-i ; -2i 2-3i]X6 = ones(1,8); X7 = zeros(1,8);

Page 23: Parte2

CAPITULO - 2 23

% linspace(inicial,final,numero)X8= linspace (-4,8,32);X9= 2*X8 – 1X10 = abs(X1)X11 = abs(X5)stem(X8,X9);hold onstem(X9,’r’)

Page 24: Parte2

CAPITULO - 2 24

Resolución de una ecuación

function z= cuatroFuncion (f, ini, fin, n) clc; disp(‘ --manejo de vectores -- ’) pasos=(fin-ini)/n; x=ini:pasos:fin-pasos; y=eval(f); fplot(f,[ini fin,min(y) max(y)]); z= y(abs(y)<0.0001); ind=find(abs(y)<0.0001); point=x(ind); disp('valores en x= '),disp(point);disp('valores en y= '),disp(z);end

% cuatroFuncion('x.^2 - 5*x + 6',1,3,10000)

Page 25: Parte2

CAPITULO - 2 25

Condicional

Page 26: Parte2

CAPITULO - 2 26

ProblemaDos números son ingresados como parámetro de una función y se desea saber cual de los dos es mayor, realice una función que me permita saberlo.

Se desea saber si el argumento ingresado como argumento es un escalar o un vector o una matriz . Realice una función que me permita determinarlo.

Page 27: Parte2

CAPITULO - 2 27

Problema

Una pc, esta conectada a un sensor de temperatura, para poder controlar un aire acondicionado de un hospital, se desea saber que acción esta ejecutando el computador dependiendo de la temperatura.

Temperatura Acción60º o mayor Alarma, posible incendio

60º - 40º Bajar la temperatura

21º - 38º Temperatura normal

15º - 21 Demasiado frío

Page 28: Parte2

CAPITULO - 2 28

CondicionalCondicionalif (Condicion)

Sentenciasend

if (Condicion) Sentencias

elseSentencias

end

if (Condicion1) Sentencias

elseif (Cond2)Sentencias

elseif(Cond3)…elseif(Condn)

SentenciasElse

Sentenciasend

Page 29: Parte2

CAPITULO - 2 29

CondicionalCondicionalswitch (Cond1) case 1

Sent; case 2

Sent; case {3,4,5}

Sent;otherwise

Sent;end Practica05a.m

fact.m

Page 30: Parte2

CAPITULO - 2 30

PracticaPractica

Realizar una función que reciba los operandos como parámetro y el operador por teclado y muestre la respuesta.

try try –– catch ??catch ??

practica05.m

Page 31: Parte2

CAPITULO - 2 31

TIMER

t = timer('StartDelay', 4,'Period', 4,'TasksToExecute',... 8,'ExecutionMode','fixedRate','StartFcn','start',…'StopFcn','detener','ErrorFcn','malo','TimerFcn','tiempo');

Page 32: Parte2

CAPITULO - 2 32

Lazos

Page 33: Parte2

CAPITULO - 2 33

LazosLazos

while(cond)sent;

end

for i=ini:step:finsent;

end

continuebreakreturn funcontrol.m

fmovie.m

aproxseno.m

comparar.m

Page 34: Parte2

CAPITULO - 2 34

Como se representarComo se representaríía la siguiente funcia la siguiente funcióónn

⎪⎪⎪

⎪⎪⎪

−<<+−−

≤≤−

−<<−−+

−≤+

=

otrosxxx

xxxx

xx

xfun

;221;1)1(

11;12;1)1(

2;2

)(2

3

2

Page 35: Parte2

CAPITULO - 2 35

PracticaPracticaEscribir un programa que pida por línea de comandos un entero (n) y luego calcule lo siguiente.

1. Mientras el valor de n sea mayor que 1, cambiar el entero por la mitad de su valor si el entero es par; si es impar cambiarlo por tres veces su valor mas 1.

2. Repetir estas operaciones cíclicamente y obtener el número de iteraciones hasta que el algoritmo se para en 1.

Por ejemplo: para n=10 la secuencia es 5, 16, 8, 4, 2 y 1; entonces el número de iteraciones han sido 6

Page 36: Parte2

CAPITULO - 2 36

Tiro parabólico

Se desea observar la trayectoria de un proyectil, el cual es lanzado con un velocidad inicial Vo y un ángulo de inclinación β.

Page 37: Parte2

CAPITULO - 2 37

Operación con Bits

dec2bin(dec);dec2bin(dec,N)

Convierte un entero a binario.tiene que ser no negativo menor a 2^52

bin2dec(bin) b es stringhex2dec(dec) Convierte decimal a

hexadecimaldec2base(dec, bin);Dec2base(dec, bin, N)

Convierte decimal a base b, la base debe de estar entre 2 -36

base2dec(str,base) Returna un numero

Page 38: Parte2

CAPITULO - 2 38

Ejemplo

a1 = dec2bin(26);disp(‘a1= ’),disp(a1);pause(20);a2= dec2bin(26,7);disp(‘a2= ’),disp(a1);pause(20);b1= bin2dec(a1);disp(‘b1= ’),disp(b1);pause(20);c1=dec2hex(45);

Page 39: Parte2

CAPITULO - 2 39

Problema

Una pc, esta conectada a un sensor de temperatura, por medio del puerto serial cuya misión es controlar un aire acondicionado de un hospital, se desea saber que acción esta ejecutando el computador dependiendo de la temperatura. La temperatura se ingresa en base 2

Temperatura Acción60º o mayor Alarma, posible incendio

60º - 40º Bajar la temperatura

40º - 21º Temperatura normal

21º - menos Demasiado frio

Page 40: Parte2

CAPITULO - 2 40

CELDAS

Page 41: Parte2

CAPITULO - 2 41

Celda y EstructurasCelda y EstructurasNombre completo Nacionalidad Documento de identidad

Tipo Número Fecha de expedición Fecha de caducidad

Dirección de contacto Números de teléfono

Número de la dirección de contacto Teléfono móvil de empresa Teléfono móvil personal

Page 42: Parte2

CAPITULO - 2 42

CeldasEmpleado1={‘Juan Pérez';‘Ecuatoriana'; ...

{‘CI',091222222,12122000,12122000}; ... 'Calle Esperanza 12 1,2'; [251487, 698541]}

EstructuraNombre=‘Juan Pérez’Nacionalidad=‘Ecuatoriana’Tipo=‘CI’Numero=‘092121212’Caduca = 12122000 …Empleado.Nombre; Empleado.Nacionalidad;…

Page 43: Parte2

CAPITULO - 2 43

ESTRUCTURAESTRUCTURAfieldnames(ST) : devuelve un vector de celdas con cadenas de caracteres que recogen los nombres de los campos de una estructuraisfield(ST,s) : permite saber si la cadena s es un campo de una estructura STisstruct(ST) : permite saber si ST es o no una estructurarmfield(ST,s): elimina el campo s de la estructura STgetfield(ST,s): devuelve el valor del campo especificado. Si la estructura es un array hay que pasarle los índices como cellarray (entre llaves {}) como segundo argumento.setfield(ST,s,v): da el valor v al campo s de la estructura ST. Si la estructura es un array, hay que pasarle los índices como cellarray (entre llaves {}) como segundo argumento

Page 44: Parte2

CAPITULO - 2 44

CELDASCELDAScell(m,n): crea un cell array vacío de m filas y n columnas.celldisp(ca): muestra el contenido de todas las celdas de ca .cellplot(ca): muestra una representación gráfica de las distintas celdas.iscell(ca): indica si ca es un vector de celdas .num2cell(): convierte un array numérico en un cellarray .cell2struct(): convierte un cell array en una estructura. struct2cell() convierte una estructura en un cell array.

Page 45: Parte2

CAPITULO - 2 45

Practica …

vc(1)={[1 2 3]} ;vc(2)={'mi nombre'}; c(3)={rand(3,3)}vb{1}=[1 2 3] ; vb{2}='mi nombre‘ ;vb{3}=rand(3,3)ST=cell2struct(vb,{'vector','cadena','matriz'},2)vbb = struct2cell(ST)'

Page 46: Parte2

CAPITULO - 2 46

Forma idealForma ideal

varargin, narginvarargout, nargout

Argumento.m

Practica05c.m

Page 47: Parte2

CAPITULO - 2 47

syms

Con este comando lo que se hace establecer una letra como un valor y así poder hacer sustitución literal. Ej: syms xF=2*x – 2 ; G=3 –x ; H=F*G;expand(H)findsym(F); % lo que hace es buscar en F la variable literalN=3;B=x.*((0:N)’*(0:N));P1=expand(H);factor(P1);

Page 48: Parte2

CAPITULO - 2 48

Syms sP2= -(1/6)/(s+3) – (1/2)/(s+1) + (2/3)/s;[N,D]= numden(P2);P3= 2*x / (x^2 -2*x); P4= simplify(P3);P5= subs(P4,x ,x-1);P6= collect(P5)Q=[1 2 -3 4 5]P7=Poly2sym(Q ,s);P8=sym2poly(P7)D = s^2 +6*s +9;s = solve(D)

Page 49: Parte2

CAPITULO - 2 49

Ecuación literal

syms c

A = sym([2 -3; 5 c]);

b = sym([3; 19])

x = A\b

x= expand(x);

Page 50: Parte2

CAPITULO - 2 50

Editar EcuacionesEditar Ecuaciones

fun1=inline('sin(x)*cos(x)','x'); fun2=inline('sin(x)*cos(y)','x','y'); fun3=@(x) exp(-(x. ^2+a. ^2))fun4=@(x,y) exp(-(x. ^2+y. ^2)) fun5=@(b,z) z^aproxSeno(b)fsolv=fzero(Eq,[a,b])

eq=@(x) log(x)-sin(x); sol=fzero(eq,1);

Page 51: Parte2

CAPITULO - 2 51

GrGrááficosficosFigure, hold, subplot, Figure, hold, subplot, clfclf ,close(n)Ejemplo :Ejemplo :X=X=pipi:0.1::0.1:pipiY1=Y1=sin(xsin(x))Y2=Y2=cos(xcos(x))plot(X,Y2plot(X,Y2););holdhold on;plot(X,Y1on;plot(X,Y1););fplot('funcion', [xmin,xmax,ymin,ymax], ‘control', tol)ezplot(f, [xmin,xmax,ymin,ymax]);

% figure('position',[left,botton, width,height])

Plot(X,Y2,Plot(X,Y2,’’--bb’’) ??) ??

fsubplotm.m

leyenda.m

Page 52: Parte2

CAPITULO - 2 52

plot(x,y,'-.rs', 'LineWidth',4, 'MarkerEdgeColor','k',...'MarkerFaceColor', 'g','MarkerSize',10)

Page 53: Parte2

CAPITULO - 2 53

Otros GrOtros Grááficosficosbar() crea diagramas de barrasbarh() diagramas de barras horizontalesbar3() diagramas de barras con aspecto 3-Dbar3h() diagramas de barras horizontales con aspecto 3-Dpie() gráficos con forma de “tarta”pie3() gráficos con forma de “tarta” y aspecto 3-Darea() similar plot(), pero rellenando en ordenadas de 0 a ystairs() función análoga a bar() sin líneas internaserrorbar() representa sobre una gráfica –mediante barras– valores de errorescompass() dibuja los elementos de un vector complejo como un conjunto de vectores partiendo de un origen comúnfeather() dibuja los elementos de un vector complejo como un conjunto de vectores partiendo de orígenes uniformemente espaciados sobre el eje de abscisashist() dibuja histogramas de un vectorrose() histograma de ángulos (en radianes)quiver() dibujo de campos vectoriales como conjunto de vectores

newplot2.m

Page 54: Parte2

CAPITULO - 2 54

Cadena de caracteresCadena de caracteresdouble(c) : convierte en numeros cada carácterChar(A) : convierte a carácterChar(c1,c2) crea una cadena completando la menor con espaciosDeblank(c): elimina espacios en blanco al finalIschar(c) : detecta si una variable es cadenaIsletter(c) : detecta si un carácter es una letra del alfabeto.Strcmp(c1,c2) : compara cadenaStrcmpi(c1,c2) : no existe dif. Con mayusculas y minusculasStrncmp(c1,c2,n) : compara los n primeros caracteresS=[‘hola’,’ mundo’] : concadenación

Page 55: Parte2

CAPITULO - 2 55

Findstr(c1,c2) :devuelve un vector con todas posiciones de las coincidencias.

Strrep(c1,c2,c3) : reemplaza c3 por c2 en c1int2Str(c) : convierte un número a cadena.Num2str(x,n): un numero real a cadena.Str2double(str) : convierte una cadena a numero real.Vc=cellstr(cc) : cadena a vector celda eliminando

espacios en blanco.

Page 56: Parte2

CAPITULO - 2 56

Gui Gui -- prediseprediseññadosados

choice = menu(‘Menu','uno','dos','tres')msgbox(‘Mensaje’,’Titulo’,’Icono’,’non-modal’)Icono : error , help, warn, personal

Leccion…