You are on page 1of 45

Matlab

CLASE 3
Herramientas fundamentales

Ing. Ivn Cisneros P. 2015


Universidad Tcnica de Manab
DIAGRAMA GENERALIZADO
DE BLOQUES
EJEMPLO: DIAGRAMA
GENERALIZADO DE
BLOQUES
COMENZAR

Leer TF

TC= (TF-32)*5/9

Visualizar Tc

FIN
EJEMPLO: DIAGRAMA
GENERALIZADO DE
BLOQUES
COMENZAR

Leer TF

TC= (TF-32)*5/9

Visualizar Tc

FIN
ESTRUCTURA DE
DIAGRAMACIN
a) Estructura secuencial
b) Estructura alternativa
c) Estructura repetitiva
Resolucin por estructura
secuencial
Resolviendo la ecuacin cuadrtica A X2 + B X + C = 0,
podremos dar ejemplos de DDB que incluyan cada tipo de
estructura. COMENZAR

Leer A, B, C

2
B + B 4 AC
X 1R =
2 A

2
B B 4 AC
X 2 R =
2 A

X1R, X2R

FIN
Resolucin por estructura
alternativa
Para una terna dada de coeficientes A, B, C, este DDB
considerar la posibilidad de que el discriminante pueda
tener cualquier valor.
Resolucin por estructura
repetitiva
En este caso, se considerarn N ternas de coeficientes, A,
B y C..
DIAGRAMAS DE BLOQUES UTILIZANDO
VECTORES O MATRICES
Los arreglos (vectores, matrices) contienen elementos relacionados,
designados con un nombre comn. Por ejemplo, el SMN podra proveer
diariamente las temperaturas mnimas y mximas de las Capitales Provinciales
y de la Ciudad de Bs As, con dos vectores Tmin, y Tmax, c/u de 24 elementos.
Si quisiramos sacar el promedio de esos valores, el DDB sera:
DIAGRAMAS DE BLOQUES CON LAZOS
REPETITIVOS ANIDADOS
Suponga Ud que las temperaturas de cada capital provincial de Argentina
vienen dadas en forma horaria. Tendremos entonces la matriz, T(i, j), donde i =
1..24, y j = 1..24. Si se quiere sacar un promedio general, que incorpore todos
los datos, podemos programar la siguiente estructura repetitiva:
ETAPAS DE LA RESOLUCION DE UN
PROBLEMA MEDIANTE COMPUTADORA
1. Anlisis del Problema
2. Obtencin del mtodo de resolucin
3. Diagramacin del mtodo (DDB)
4. Codificacin en lenguaje de alto nivel (Programacin
propiamente dicha)
5. Eliminacin de errores (debugging)
6. Ejecucin del programa y obtencin de resultados.
Representacin grfica
7. Anlisis de los resultados. Si hay errores conceptuales,
volver a 1) , 2 4) . Si no, seguir en 8)
8. Refinamiento del programa (Mejoras en el diseo,
legibilidad, documentacin, actualizacin)
PLATAFORMA COMPUTACIONAL
MATLAB
1) El sistema MATLAB consta de cinco partes principales:
Entorno de desarrollo. Este representa el conjunto de herramientas
y recursos que permiten el uso de las funciones y archivos MATLAB.
Incluye el escritorio MATLAB y la ventana de comandos (Command
Window), el historial de comandos, y ventanas de visualizacin
(browsers) para ver la ayuda (help), la carpeta de trabajo, los
archivos, y la ruta de acceso a informacin (search path).

2) La biblioteca de funciones matemticas MATLAB (MATLAB


Mathematical Function Library). Es una vasta coleccin de
algoritmos matemticos que va desde las funciones elementales
como suma, seno, coseno, a funciones ms sofisticadas como
determinantes de matrices, autovalores, funciones de Bessel, y
transformadas de Fourier.
PLATAFORMA COMPUTACIONAL
MATLAB
3) El lenguaje MATLAB. Es un lenguaje de programacin de alto nivel, de
tipo matricial, con instrucciones de control de flujo, funciones
preprogramadas y diversos tipos de datos. Asimismo, presenta varias
alternativas para la entrada y salida de informacin y aspectos de
programacin orientada a objetos. Permite tanto la "programacin en chico",
para crear programas rpidos y descartables, y "programacin en grande"
para desarrollar aplicaciones sobre tareas de gran complejidad.
4) Realizacin de Grficos. Es el sistema grfico de MATLAB. Incluye
comandos de alto nivel para visualizacin bi y tri-dimensional,
procesamiento de imgenes, animacin, y grficos para presentaciones.
Tambin incluye comandos de bajo nivel que le permiten una total
personalizacin de la apariencia de los grficos, as como tambin para
construir interfases grficas de usuario (GUI) que dan funcionalidad y
apariencia de software a los programas que Ud. realiza.
5) La interfase de Programas de Aplicaciones de MATLAB (MATLAB
Application Program Interfase (API)). Esta biblioteca permite escribir
programas C y Fortran que interacten con MATLAB. Incluye recursos para
llamar rutinas desde MATLAB (dynamic linking), llamando a MATLAB como
motor computacional (motor de clculos) y para leer y escribir desde o en
archivos MAT (generados por la ventana de comandos).
Ejemplo del uso de Matlab en modo
interactivo
Aqu se da un ejemplo simple, donde se ingresa un valor a = 1, otro b = 2, se
calcula c como la suma de ambos, se obtiene d como la raz cuadrada de c, y
e como el seno de d. Las variables que se van creando, que en este caso son
arreglos de 1 x 1 (para matlab todas las variables son arreglos), se acumulan
en el Espacio de trabajo (Workspace) y se visualizan a la izquierda.
INGRESO DE MATRICES
Una buena forma de empezar con MATLAB (MATrix
LABoratory) es aprendiendo como operar con las
matrices. En primera instancia se deben ingresar los
valores que contiene las filas y las columnas. Una forma
de hacerlos es manual, por ejemplo:
>>A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
Luego, MATLAB muestra la matriz que se ha ingresado.
A=
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
SUMA, TRANSPUESTA Y
DIAGONAL
Matlab posee la funcin sum para realizar sumas. En el caso de las
matrices, con la aplicacin de esta funcin se suman los valores
contenidos en las columnas. Si aplicamos esta funcin a la matriz A:
>>sum (A)

MATLAB responde con ans =


34 34 34 34

Cuando no se especifica una variable para asignar el resultado,


MATLAB usa la variable ans, abreviatura de answer, para almacenar
los resultados de un clculo. Se calcul un vector fila conteniendo las
sumas de las columnas de A. Cada una de ellas da la misma suma, 34.
SUMA, TRANSPUESTA Y
DIAGONAL
Que sucede con las sumas de las filas? MATLAB tiene una preferencia para
trabajar con las columnas de una matriz, as que la forma ms fcil de realizar
las sumas por fila es obtener la transpuesta de la matriz, calcular la suma de
las columnas de la transpuesta, y luego transponer el resultado. La operacin
de la transpuesta se representa mediante un apstrofe. En tal operacin, la
matriz es reposicionada alrededor de su diagonal principal, y transforma un
vector fila en un vector columna. As
>>A'
ans =
16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1
mientras que >>sum(A')'
produce un vector columna conteniendo la suma de las filas originales ans =
34
34
34
34
SUMA, TRANSPUESTA Y
DIAGONAL
La funcin diag genera un vector con los elementos de la diagonal
principal.
>>diag(A) dando lugar a ans =
16
10
7
1
En consecuencia, sumando los mismos
>>sum(diag(A))
se obtiene ans =
34
.
AHORA SI EMPIECE A TECLEAR DATOS Y COMANDOS
DE LOS SIGUIENTES EJERCICIOS SLO TECLEA LOS
VECTORES NO ESCRIBAS EL COMENTARIO %
El punto y coma ; termina la instruccin y oculta la exhibicin del resultado de la operacin.
Teclee D = [-3, 1.5, 6, 2.5] ahora Teclee D = [-3, 1.5, 6, 2.

B = [ 2; 4; 6; 10] % DEFINE UN VECTOR COLUMNA.

C = [ 5, 3, 5 ; 6, 2, 3 ] % DEFINE UNA MATRIZ 2 x 3.

E = [ 3, 5, 10, 0; 0, 0 , ...
0, 3; 3, 9, 9, 8 ] % COMA Y TRES PUNTOS PARA CONTINUAR
UNA LINEA.

T = [ 4, 24, 9 ]

Q = [ T, 0, T ] % INTERCALA UN VALOR DE CERO ENTRE


DOS VECTORES.

V = [ C ( 2, 1); B ] % DE LA MATRIZ C SELECCIONA EL


VALOR (m, n) Y LO AGREGA AL VECTOR B.

A (2, 1) = - 3 % CREA UNA MATRIZ LLAMADA A Y LE


ASIGNA EL VALOR DE 3 EN (m, n)
OPERADOR DE DOS PUNTOS
El operador de dos puntos es til para generar matrices nuevas;

Si se usa un signo de dos puntos para separar dos enteros, el operador de dos puntos
generara todos los enteros entre los dos enteros especificados.
tecle:

n = 1 : 10 % Este operador es especialmente til para generar los ndices


de tiempo de una seal de tiempo discreto.

Tambin se usan los signos de dos puntos para separar tres nmeros, el operador de
dos puntos generar valores entre el primer nmero y el tercero, usando el segundo
nmero como incremento:
tecle:

t = 0.0:0.5:6.0 % este operador es especialmente til para generar los


ndices de tiempo continuo o un dominio de una
funcin analgica.
El incremento tambin puede ser negativo
tecle:
r = 15:-1:0
AUTENTICIDAD DE LOS
COMANDOS
Funciones especiales para generar matrices nuevas.
La funcin size devuelve dos argumentos escalares que representan el nmero de filas
y el nmero de columnas, podemos usar size para generar una matriz de ceros que
tenga el mismo tamao que la otra matriz ejemplo:
Tecle
W = [ 4, 3, 2; 4, 6, 3 ];
F= zeros(size ( W ) )
La funcin ones genera una matriz que solo contiene unos.
Tecle
C= [1, 2, 3; 4, 2, 5];
D = ones(size(C))
Algunas ocacines es necesario conocer que variables se hallan definidas y que valores
tienen almcenados el comando who lleva a cabo esta accin:
Tecle who
Si desea dejar una variable sin definicin (sacarla de la lista ) se utiliza el comando:
clear.
Operaciones con escalares ,
vectores y matrices
Los operadores matemticos incorporados que se utilizan con frecuencia en matlab
son:
Operaciones con matrices
Tecle el enunciado de asignacin siguiente;
a=3;
b=[2,6,4];
c=[4,10, 2];
los vectores y matrices pueden multiplicarse por un escalar:
tecle:
a*b
ans es el nombre dado a un resultado cuando el usuario no le asigna un
nombre.

Un escalar puede sumarse a un vector o matriz:


tecle:
a+c
La suma de un escalar a un vector o matriz slo aade el escalar a cada
elemento del vector o matriz la resta se define de manera similar:
tecle:
a-b
Operaciones con matrices
Los vectores y matrices se suman (o restan) como lo hacemos en
matemticas, esto es, los dos vectores o matrices deben tener la misma forma
para sumarse o restarse a menos que uno de ellos sea un matriz de 1*1, un
escalar, como lo vimos antes :
tecle:
b+c
c-b

Los vectores y las matrices se multiplican de acuerdo a las reglas del lgebra:
tecle:
b*c

Este resultado ilustra un error comn en Matlab. Las matrices deben ser
conmensurables para ser multiplicadas utilizando el operador *. La
premultiplicacin de un vector rengln de 1 por 3 como c por un vector rengln
de 1 por 3 como b no esta definida. Sin embargo si c se transpusiera a un
vector columna 3 por 1, se definira la multiplicacin. La transposicin se
efecta con el operador .
tecle: c
Operaciones elemento por
elemento
A menudo es muy til multiplicar dos vectores o matrices de la misma forma,
elemento por elemento en vez de utilizar las reglas usuales de la
multiplicacin de matrices. Ese tipo de multiplicacin se denomina
multiplicacin del arreglo en Matlab y se lleva a cabo utilizando el operador .*
Las operaciones elemento por elemento, u operaciones de arreglos, no slo
se aplican a operaciones entre dos matrices del mismo tamao, si no
tambin a operaciones entre un escalar y un no escalar.

As pruebe las instrucciones de cada uno de los siguientes juegos:


tecle:

A = [ 4, 3, 2, 4, 6 ];
C = 3.*A
G = A./5

Las vectores resultantes C y G tendrn el mismo tamao que A.


Operaciones elemento por
elemento
A fin de ilustrar las operaciones de arreglos para vectores, considere los dos siguientes vectores fila:
Tecle:
B = [ -6, 3, -2, 4, 6 ];

Calculemos el producto de arreglos de A y B usando las siguientes instrucciones:


Tecle:
L = A.*B

El comando de divisin de arreglos,


Tecle:
F=A./B

Asimismo la exponenciacin de arreglos tambin es una operacin elemento por elemento


ejemplos;
Tecle:
Z = A.^2
M = A.^B
Tambin podemos usar una base escalar con un exponente vector
como;
P= 3.^A
.
GRFICAS
GRAFICA X vs. Y: Grficas x vs. y sencillas. Suponga que queremos
graficar los siguientes datos recabados de un experimento con un
modelo de coche de control remoto. El experimento se repite 10 veces,
midiendo la distancia que un mvil recorre en cada ensayo.

(x) Ensayo (y) Distancia


1 58.5
2 63.8
3 64.2
4 67.3
5 71.5
6 88.3
7 90.1
8 90.6
9 89.5
10 90.4
GRFICAS
Pruebe generar esta grfica: creando un vector llamado x con los datos de la
columna Ensayo, y un vector llamado y con los datos de la columna
Distancia y en seguida teclee :
plot (x, y), grid y de enter
Se genera automticamente la grfica.

La buena prctica de ingeniera exige la inclusin de unidades y un titulo

Por lo tanto en el cdigo anterior incluya los siguientes comandos:

plot(x,y), title (Grfica de experimento), xlabel ( Ensayo), ylabel (Distancia),


grid

Si se agrega un tercer argumento en el comando plot ste controla el color y


el estilo de la grfica. Es una cadena la que determina el color de la lnea,
estilo de la misma y los smbolos (si los hay ) utilizado para los puntos de
marca, por tanto intente dar elegancia a su grafica anterior agregando al
comando plot:

plot (x,y,ro), grid


LISTA DE CARACTERES
COLOR MARCADOR ESTILO DE LINEA
y amarillo . punto - continua
m magenta o circulo : punteada
c cyan x marca x -. guin-punto
r rojo + ms -- guionada
g verde * asterisco
b azul s cuadrado
w blanco d diamante
k negro v triangulo(hacia abajo)
^ triangulo (hacia arriba)
Los archivos .m o archivos .M
Este tipo de archivo es de lo ms importe que se puede generar por el usuario en
MATLAB, es un archivo que ejecuta las instrucciones programadas en l, y que pueden
convertirse en un comando de matlab.
Ahora tu crearas un archivo .m

Desde la ventana de matlab selecciona new, M-file

Aparecer un block de notas dentro de l, declara las siguientes variables:


Tecle:
t =[0:0.001:2]; % Este vector se puede tambin generar con: linspace(0,0.001,2).
m = 2;
y = m .*t;
plot(t, y, 'r', linewidth,4),grid %linewidth, 4 : te da el grueso de la linea.

Despus guarda este cdigo en el mismo block de notas en la parte superior ( file save
en el drive e: pendiente.m si es memoria USB) con el nombre pendiente.m, est nombre
de archivo se convierte en un comando de Matlab con el nombre pendiente.
Ejectalo en la pantalla de comandos llamndolo slo con su nombre pendiente sin la
extensin.m (antes de llamarlo recuerda cambiarte de directorio del C: al e: con la
instruccin cd e: si es el caso) .
Este archivo .m puedes llevarlo a otra computadora que tenga el programa matlab y
ejecutarlo .
FUNCIONES
MATLAB provee excelentes funciones para grficas en una y dos dimensiones.
Veamos un par de ejemplos sencillos. Suponga que queremos trazar la grfica
de la funcin
y=t^2*e(-t.^2);
Esto lo podemos lograr con las instrucciones:
Tecle:
t=[-10:.1:10]; % La primera instruccin divide el intervalo
[-10,10]en subintervalos de largo 0.1
y=t .^2 .*exp(-t.^2); % Esta lnea evala la funcin en los puntos.
plot(t,y,'linewidth',4),grid % Grafica la funcin.
FUNCIONES
Supongamos ahora que queremos dibujar una superficie:
Tecle:
x=-10:0.5:10; %Las primeras dos
instrucciones dividen los ejes de
x" y "y" en subintervalos de largo
0.5.
y=x;
[X,Y]=meshgrid(x,y); %la tercera instruccin genera
una rejilla en el conjunto [-10,10]
x [-10,10] con cuadraditos de
lados 0.5 ,
Z=X.^2.*exp(-Y.^2); % La cuarta instruccin evala la funcin
en los puntos de la rejilla, y finalmente
trazamos la superficie con surf.
surf(X,Y,Z),title('Grafica de superficie')
GRAFICAS LINEALES Y
LOGARTMICAS
La mayor parte de las grficas que generamos dan por hecho que los ejes x
vs. y se dividen en intervalos equiespaciados; estas grficas se llaman grficas
lineales. Una escala logartmica (de base 10) es til cuando una variable
abarca varios rdenes de magnitud.

Los comandos MATLAB para generar grficas lineales y logartmicas de los


vectores x y y son los siguientes

plot (x,y) Genera una grfica lineal con los valores de x y y.


semilogx (x,y) Genera una grfica de los valores de x y y usando una escala
logartmica para x y una escala lineal para y.
semilogy (x,y) Genera una grfica de los valores de x y y usando una escala
lineal para x y una escala logartmica para y.
loglog (x,y) Genera una grfica de los valores de x y y usando escalas
logartmicas tanto para x como para y.
Ms adelante se ver como utilizar estos comandos
GRAFICAS MULTIPLES
Una forma sencilla de generar curvas mltiples en la
misma grfica es usar mltiples argumentos en un
comando de graficacin, como en

Plot (x, t, y ,t) Al ejecutarse este programa, se traza la


curva correspondiente a x versus t, y luego se traza en la
misma grafica la curva correspondiente y versus t.

Ms adelante se ver como utilizar estos comandos (


tarea cdigo 3).

Tarea: Comenta (con %) los comandos en los siguientes


tres cdigos, usa archivos .M, imprime tus graficas y
presntalos al maestro del curso son parte de la
evaluacin del mismo.
EJERCICIO: ecuacin de diodo
v1=[0:0.001:.7979];
w1=298;
q=1.6022e-19;
n=1.5;
k=1.38e-23;
num1=q.*v1;
den1=n*k*w1;
M1=num1./den1;
x1=1e-9.*exp(M1);
v2=[0:0.0001:.6379];
w2=358;
num2=q.*v2;
den2=n*k*w2;
M2=num2./den2;
x2=1024e-9.*exp(M2);
plot(v1,x1,'b',v2,x2,'r'), title('ECUACION DEL DIODO'),
legend('TEMPERATURA 298k', 'TEMPERATURA 358k'), grid
EJERCICIO 2:
tx=0:0.1:5;
w=x
z=w.^2-0.9*x+7;
f(1,:)=x.^2-3*x+2;
f(2,:)=2*x.^2+x-3;
subplot(2,1,1)
plot(x,f(1,:),w,z)
subplot(2,1,2)
plot(x,f)
EJERCICIO 3:
t=[-6*pi:.001:6*pi];
w1=2/3;
w2=1/2;
w3=1/3;
x1=2.*sin(w1.*t);
x2=3.*sin(w2.*t);
x3=4.*sin(w3.*t);
plot(t,x1,'b',t,x2,'r',t,x3,'k','linewidth',2),title('Cada senoide completa un
nmero entero de ciclos'),grid
EJERCICIO 4:
x=-1:.1:1;
y=-2:.1:2;
[x,y]=meshgrid(x,y);
z=x.^4+(y/2).^4;
subplot(1,2,1),contour(z)
subplot(1,2,2),mesh(z)
SUBGRFICAS
El comando subplot permite dividir la ventana de grficos en
subventanas. Las posibles divisiones pueden ser dos subventanas o
cuatro subventanas o incluso 8 ventanas en una hoja.. Los argumentos
del comando subplot son tres enteros: (m, n, p). Los dgitos m y n
especifican que la ventana de grficos se divida en una retcula de m
por n ventanas ms pequeas, y el digito p especifica la p-sima
ventana para la grfica actual ( donde se ubica esta grafica) . Las
ventanas se numeran de izquierda a derecha y de arriba abajo.
Por ejemplo el siguiente comando Subplot(2,1,1), plot(x,y) especifica
que la ventana de grficos se divida en una grafica superior y una
inferior ( dos lneas de graficas en una columna ) y que la grafica
actual plot(x,y) se coloque en la ventana superior (cdigo No.2).

El siguiente juego de instrucciones genera cuatro graficas que ilustran


la funcin del comando subplot empleando escalas lineales y
logartmica.
CONTROLES DE FLUJO
Graficas usando bucles

Intenta crear una grafica usando el ciclo for

Tecle
t=[-1:.005:1];
f=1;
w0=2*pi*f;
x=1.5*ones(size(t));
for i=1:100;
x=x+((-1)^(i+1))*(1/i)*sin(i*w0.*t);
end
plot(t,x,'r','linewidth',2), grid
Graficas usando bucles

Una ms

t=[-2:0.001:2];
x=0.25*ones(size(t));
for m=1:2:99
x=x+(-1)^((m-1)/2)*1/(m*pi)*exp(i*m*pi*t);
end
plot(t,x,'r','linewidth',2),grid

Saca tus conclusiones


TALLER
1. Integrados en equipos (mx 3 pers),
desarrollar las diferentes aplicaciones
ejemplificadas en la presentacin
2. Elaborar un programa para dibujar una
circunferencia
3. Elaborar un programa para dibujar tres
circunferencias concntricas de diferentes
radios con diferente color
4. Elaborar un programa para dibujar una elipse
TAREA
1. Elaborar un programa para solucionar un
sistema de ecuaciones simultneas (mnimo
tres variables) por el mtodo de gauss.
2. Elaborar un programa para dibujar una
parbola de color verde.
3. Elaborar un programa para dibujar tres
hiprbolas diferentes en el mismo grfico.
4. Elaborar un programa para dibujar una
superficie elptica.

You might also like