parte2
DESCRIPTION
TRANSCRIPT
Programación en MATLABVlir – Componente 8
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);
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)
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 ??
CAPITULO - 2 5
Operaciones Operaciones ……
⎪⎪⎩
⎪⎪⎨
⎧
=+−=−−+−
=+−−=+−−
43dcb02dc2ba
1cba1d3c3b2a
][][][ bxA =∗
][\][][])([][ bAbAInvx =∗=
CAPITULO - 2 6
Repaso
Entorno de trabajoComandos básicosComandos de matrices
Crear matrizManipulación de matricesFunciones con matrices
CAPITULO - 2 7
Agenda
Crear carpeta de trabajoOperadores de relaciónOperadores lógicosFunciones de FechaPolinomiosArchivos *.m Ejercicio del día
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
CAPITULO - 2 9
Operadores RelacionalesOperadores Relacionales
> < ==>= <= ~=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡−
−=
365120
101A
Practica
2>=⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
111010000
A
find(A>=2) =?
CAPITULO - 2 10
Operadores LOperadores Lóógicosgicos
A&B A|B ~A
And(A,B) Or(A,B) Not(A) Xor(A,B)
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
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)
CAPITULO - 2 13
PolinomiosPolinomios
065:)( 3 =−+ xxxqroots(p);polyval(p,2);conv(p,q);Polyder(p);
01068:)( 24 =−+− xxxxp
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]
CAPITULO - 2 15
Archivos *.m
CAPITULO - 2 16
Editor de MATLAB
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 ??
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
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
CAPITULO - 2 20
Mis primeros programas
function programa03(t) x=sin(t); y=cos(t);
plot(x,y),title(‘función parametrizada’);
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
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);
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’)
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)
CAPITULO - 2 25
Condicional
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.
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
CAPITULO - 2 28
CondicionalCondicionalif (Condicion)
Sentenciasend
if (Condicion) Sentencias
elseSentencias
end
if (Condicion1) Sentencias
elseif (Cond2)Sentencias
elseif(Cond3)…elseif(Condn)
SentenciasElse
Sentenciasend
CAPITULO - 2 29
CondicionalCondicionalswitch (Cond1) case 1
Sent; case 2
Sent; case {3,4,5}
Sent;otherwise
Sent;end Practica05a.m
fact.m
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
CAPITULO - 2 31
TIMER
t = timer('StartDelay', 4,'Period', 4,'TasksToExecute',... 8,'ExecutionMode','fixedRate','StartFcn','start',…'StopFcn','detener','ErrorFcn','malo','TimerFcn','tiempo');
CAPITULO - 2 32
Lazos
CAPITULO - 2 33
LazosLazos
while(cond)sent;
end
for i=ini:step:finsent;
end
continuebreakreturn funcontrol.m
fmovie.m
aproxseno.m
comparar.m
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
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
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 β.
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
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);
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
CAPITULO - 2 40
CELDAS
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
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;…
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
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.
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)'
CAPITULO - 2 46
Forma idealForma ideal
varargin, narginvarargout, nargout
Argumento.m
Practica05c.m
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);
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)
CAPITULO - 2 49
Ecuación literal
syms c
A = sym([2 -3; 5 c]);
b = sym([3; 19])
x = A\b
x= expand(x);
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);
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
CAPITULO - 2 52
plot(x,y,'-.rs', 'LineWidth',4, 'MarkerEdgeColor','k',...'MarkerFaceColor', 'g','MarkerSize',10)
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
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
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.
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…