You are on page 1of 69

Universidad Tcnica de Manab Facultad de Ciencias Matemticas, Fsicas y Qumicas Escuela de Ingeniera Elctrica Cuarto C

Autores: Arroyo Pazmio Zulayka Elizabeth Cevallos Giler Mara Beln Palma Leones Hernn Alejandro Quintero Quonez Mariana Gabriela Zavala Tomal Jos Oliverio

MATLAB es el nombre abreviado de MATrix LABoratory. 1-Como indica su nombre MATLAB est vinculado a la operacin con vectores y matrices 2-Est constituido por numerosas bibliotecas (Toolboxes) 3-Tiene muy bien desarrollado el tratamiento grfico 4-Permite realizar clculos y simulacin 5-Opera desde la ventana de comandos o desde Simulink 6-Tiene su propio lenguaje de programacin 7-Est soportado en lenguaje C 8-Es un sistema abierto, permite la adicin de nuevos desarrollos

Pulsando con el ratn en el icono de MATLAB , se presenta una ventana general (MATLAB Desktop) subdividida en varias ventanas: -Ventana de comandos (Command Window)
-Ventana de espacio de trabajo (Workspace)

-Ventana de histrico ( Command History Browser)


-Ventana del directorio activo o actual (Current Directory)

Ventana grfica: la salida de todos los comandos grficos que se escriben en la ventana de comandos, se realizan por la ventana grfica.

Esta ventana se crea cuando se edita un programa. Para activar esta ventana se va al men File y se seleccione New y a continuacin M-file.

Matlab ofrece la posibilidad de realizar las siguientes operaciones bsicas:


Operacin Smbolo Expresin en Matlab

suma resta multiplicacin divisin potencia

+ * /o\ ^

a+b a-b a*b a / b o a\b a^b

exit, quit : salir de MATLAB clc : borra la pantalla de comandos clf : borra la pantalla grfica clear : borra todas las variables en el espacio de trabajo, excepto las globales who: da el listado de las variables en el espacio de trabajo whos: da el listado de las variables en el espacio de trabajo, la dimensin y la cantidad de memoria que ocupa

El programa Matlab nos ofrece una amplia biblioteca para despejar las dudas sobre ciertos comandos. Podemos acceder a esta de dos maneras: 1.- Tecleando el comando help

abs(x) cos(x) tan(x) acos(x) atan(x) log(x) log10(x) sinh(x) tanh(x) fix(x) floor(x) round(x) ceil(x) exp(x)

valor absoluto coseno tangente coseno inverso tangente inversa logartmo natural logartmo base 10 seno hiperblico tangente hiperblica redondea hacia cero redondea hacia - infinito redondea hacia el entero mas cercano redondea hacia + infinito exponencial

Tipo format short format long format short e

Resultado

Ejemplo: >> pi

format long e format short g format long g format short eng format long eng format bank format hex format rat format +

Formato coma fija con 4 dgitos despus de 3.1416 la coma (es el formato que viene por defecto) Formato coma fija con 14 o 15 dgitos 3.14159265358979 despus de la coma Formato coma flotante con 4 dgitos 3.1416e+000 despus de la coma Formato coma flotante con 14 o 15 dgitos 3.141592653589793e+000 despus de la coma La mejor entre coma fija o flotante con 4 3.1416 dgitos despus de la coma La mejor entre coma fija o flotante con 14 o 3.14159265358979 15 dgitos despus de la coma Notacin cientfica con 4 dgitos despus de 3.1416e+000 la coma y un exponente de 3 Notacin cientfica con 16 dgitos 3.14159265358979e+000 significantes y un exponente de 3 Formato coma fija con 2 dgitos despus de la 3.14 coma Hexadecimal 400921fb54442d18 Aproximacin racional 355/113 Positivo, negativo o espacio en blanco +

u = [2 4 5] tiene una fila con tres elementos (matriz de 1 x 3). v = [2; 4; 5] tiene tres filas separadas por puntos y comas (matriz de 3 x 1).

v = [2 4 5]' o v = u' transpone u para generar la misma v. w = 2:5 define el vector de filas w = [2 3 4 5] mediante valores que aumentan sucesivamente en una unidad. u = 1:2:7 asigna valores que aumentan en dos unidades para obtener u = [1 3 5 7]

A = [1 2 3; 4 5 6] tiene dos filas (el punto y coma siempre separa unas filas de otras). A = [1 2 3 4 5 6] tambin genera la matriz A, pero es ms difcil de escribir. B = [1 2 3; 4 5 6]' es la transpuesta de A. As pues, AT es A' en MATLAB.

Tambin se pueden crear arreglos as: t = 0:0.1:1 t = 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 logspace(d1,d2,n) w = logspace(-1,2,n); Genera un arreglo logartmico de 10^-1 a 10^2 con n puntos w = logspace(-1,2) Genera un arreglo logartmico de10^-1 a 10^2 con 50 puntos

diag(v) genera una matriz diagonal con el vector v como diagonal. toeplitz(v) define una matriz simtrica de diagonal constante con v como primera fila y primera columna. toeplitz(w, v) define una matriz simtrica de diagonal constante con w como primera columna y v como primera fila. ones(n) genera una matriz de n n con todos los valores iguales a uno. zeros(n) genera una matriz de n n con todos los valores iguales a cero. eye(n) genera una matriz identidad de n n. rand(n) genera una matriz de n n con elementos de valor aleatorio entre 0 y 1 (distribucin uniforme). randn(n) genera una matriz de n n cuyos elementos siguen una distribucin normal (media 0 y varianza 1). ones(m, n), zeros(m, n), rand(m, n) generan matrices de m n. ones(size(A)), zeros(size(A)), eye(size(A)) generan matrices de la misma forma que A.

linspace(x1,x2,n) genera un vector con n valores igualmente espaciados entre x1 y x2 logspace(d1,d2,n) genera un vector con n valores espaciados logartmicamente entre 10^d1 y 10^d2. Si d2 es pi6, los puntos se generan entre 10^d1 y pi magic(n) crea una matriz (nxn) con los nmeros 1, 2, ... n*n, con la propiedad de que todas las filas y columnas suman lo mismo hilb(n) crea una matriz de Hilbert de tamao (nxn). La matriz de Hilbert es una matriz cuyos elementos (i,j) responden a la expresin (1/(i+j-1)). Esta es una matriz especialmente difcil de manejar por los grandes errores numricos a los que conduce invhilb(5) crea directamente la inversa de la matriz de Hilbert kron(x,y) produce una matriz con todos los productos de los elementos del vector x por los elementos del vector y. Equivalente a x'*y, donde x e y son vectores fila compan(pol) construye una matriz cuyo polinomio caracterstico tiene como coeficientes los elementos del vector pol (ordenados de mayor grado a menor) vander(v) construye la matriz de Vandermonde a partir del vector v (las columnas son las potencias de los elementos de dicho vector)

A(3, 2) = 7 coloca un 7 en el elemento (3, 2). A(3,:) = v sustituye los valores de la tercera fila por los de v. A(:, 2) = w sustituye los valores de la segunda columna por los de w. El smbolo de los dos puntos : significa todo (todas las columnas o todas las filas). A([2 3],:) = A([3 2],:) intercambia las filas 2 y 3 de A.

A(i, j) muestra el elemento (i, j) de la matriz A (escalar = matriz de 1 1). A(i, :) muestra la fila i-sima de A (como vector de fila). A(:, j) muestra la columna j-sima de A (como vector de columna). A(2: 4,3: 7) muestra las filas de la 2 a la 4 y las columnas de la 3 a la 7 (en forma de matriz de 3 5). A([2 4],:) muestra las filas 2 y 4 y todas las columnas (en forma de matriz de 2 n). A(:) muestra una sola columna larga formada a partir de las columnas de A (matriz de mn 1). triu(A) coloca ceros en todos los elementos por debajo de la diagonal (triangular superior). tril(A) coloca ceros en todos lo elementos por encima de la diagonal (triangular inferior).

B(:,2) = [ ]Eliminar una columna B= 1 3 4 6 7 9

A*B da la matriz resultante del producto AB (si dicha operacin es posible). A. * B da el producto elemento por elemento (si size(A) = size(B), es decir, si tienen el mismo tamao)

Si se escribe: g*x da error, pues no se da la condicin para la multiplicacin de matrices, ya que ambas matrices son de dimensin 2x3 Si se escribe g*x Si sera vlida la multiplicacin matricial

inv(A) pinv(A) A\B x = A\b

da A-1 si A es cuadrada e invertible. da la pseudoinversa de A. da inv(A) * B si existe inv(A): la barra inversa es la divisin por la izquierda. da la solucin de Ax = b si existe inv(A).

Sea el caso de la divisin trmino a trmino x = [1 4 5;3 1 6] y g = [1 2 3;4 5 6]


g./x divisin por la derecha ans= 1.0000 0.5000 0.6000 1.3333 5.0000 1.0000 g.\x divisin por la izquierda ans = 1.0000 2.0000 1.6667 0.7500 0.2000 1.0000

g.^2 ans=

1 4 9 16 25 36

2.^g ans = 2 4 8 16 32 64

En el caso de arreglos complejos, cuando se realiza la transpuesta, el signo de la parte imaginaria cambia. Sea a =1:2 a= 12 d = a + i*a d = 1.0000 + 1.0000i 2.0000 + 2.0000i

e = d e= 1.0000 1.0000i 2.0000 2.0000i

Para que se mantenga el signo en la transpuesta se debe poner un punto antes del apstrofe d= 1.0000 + 1.0000i 2.0000 + 2.0000i f = d. f= 1.0000 + 1.0000i 2.0000 + 2.0000i

a = [1 4 7;3 5 8]; Sea a(2,2) = 0 a= 147 308 a(:,1) = 4 ans= 447 408 a(:,3) columna 3 ans = 7 8

anular un trmino

Obligar a los trminos de la columna 1 a que valgan 4

Buscar los trminos de la

A = [1 2 3;4 5 6;7 8 9]; B = [3 5 7;4 9 6;3 2 1]; isequal(A,B) devuelve 1 si los arreglos tienen igual dimensin y trminos idnticos. ans =0 ismember devuelve un arreglo de la misma dimensin de A, ubicando unos en los ndices de A que estn en el segundo argumento (B). A = [1 2 3;4 5 6;7 8 9]; B = [3 5 7;4 9 6;3 2 1];

ismember(A,B) ans = 111 111 101

1 2 3 x1 366 4 5 6 x2 704 7 8 0 x3 351


Ax = b x= A \b

Para resolver dicha ecuacin con MATLAB se utiliza el siguiente comando: x = inv(A)*b; o x=A\b x = 25.0 22.0 99.0 Ambos resultados son iguales Cuando el nmero de ecuaciones es diferente al nmero de incgnitas no existe solucin nica.

Sea el caso de ms ecuaciones que incgnitas, el operador de divisin automticamente halla la solucin que minimiza el error cuadrtico en Ax b = 0
A = [1 2 3;4 5 6;7 8 0;2 5 8]; b = [366;804;351;514]; x = A\b x = 247.9818 -173.1091 114.9273

det(A) es el determinante (si A es una matriz cuadrada). rank(A) es el rango (nmero de pivotes = dimensin del espacio de filas y del espacio de columnas). size(A) es el par de nmeros [m n]. trace(A) es la traza = suma de los elementos de la diagonal = suma de autovalores. null(A) es una matriz cuyas columnas n - r forman una base ortogonal para el espacio nulo de A. orth(A) es una matriz cuyas columnas r forman una base ortogonal para el espacio de columnas de A.

Se utiliza el comando length length(t) ans = 11

Las funciones son, al igual que los scripts, ficheros.m. Se caracterizan por que:
1- Se inician con una primera lnea donde se pone lo siguiente: function( variables de salida)= nombre(variables de entrada) 2-Una segunda lnea de comentarios, denominada H1, donde se define lo que la funcin realiza. 3-Puede haber ms lneas de comentarios. 4-Por ltimo, lneas de comandos.

Las funciones se guardan con el nombre que se le di, seguido de la extensin .m. Para invocar la funcin, se escribe: [variables de salida] = nombre(variables de entrada). Lo que diferencia las funciones de los scripts, es que las funciones solo interactan con el espacio de trabajo por medio de las variables de entrada y las variables de salida. Variables intermedias no interactan con el espacio de trabajo.

El nombre de la funcin y el nombre de su fichero no tienen que ser iguales, aunque es recomendable.
- La primera vez que MATLAB ejecuta una funcin, abre un fichero texto y compila los comandos en una representacin interna en memoria, eso hace que se corra ms rpido en las siguientes llamadas.

Todas las lneas de comentarios se muestran cuando se solicitan mediante el comando help trigon. Cuando se emplea el comando lookfor trigon slo se muestra la primera lnea (H1).

El nmero de argumentos de entrada de la funcin se encuentran dentro de la misma funcin, y estn contenidos dentro del espacio de trabajo de la funcin a travs de la variable nargin.

La variable nargout contiene el nmero de argumentos de salida. Estas variables se utilizan para definir cual ser la salida de la funcin o si hay error. -Las funciones pueden compartir variables con otras funciones.

Para ello, esas variables deben declararse como variables globales en dichas funciones. Las variables globales solo interactan con el espacio de trabajo de las funciones donde se definen y no con el espacio de trabajo de MATLAB. -Las funciones terminan de ejecutarse cuando llegan al final del fichero o cuando encuentran el comando return. Este comando posibilita terminar la ejecucin antes de llegar al final del fichero. -Una funcin puede contener mas de una funcin. Estas funciones solo pueden ser llamadas por la funcin principal. La funciones pueden no tener variables de entrada y/o variables de salida. En el caso de no tener variables de salida no llevan el signo de igual.

Trazado de grficos
>>plot(y) grfico de y vs. No. de orden del vector >>plot(x,y) grfico de y vs. x >>plot(x1,y1,x1,y2) grfico de y1 vs. X1 y de y2 vs. X1 El color,la lnea de los grficos y el marcador pueden ser seleccionados en el comando plot, p.e.: >>plot(x,y,r--) entre apstrofos se pone el color y el tipo de lnea

Color

Marcador

Estilo de lnea

b azul

. punto

- slida

g verde

o circulo

: puntos

r rojo

x cruz

-. raya-punto

c cyan

+ mas

-- rayado

m magenta

* estrella

y amarillo

s cuadrado

k negro

d diamante

w blanco

Control de los ejes:


>>axis([xmin xmax ymin ymax]) define los ejes para el grfico >>axis([xmin xmax -inf inf]) fija la escala de x >>axis([xmin inf -inf ymax]) fija el valor menor del eje x y el mayor del eje y >>axis(equal) sita la escala de ambos ejes iguales Los ejes que Ud. no fija con axis, se fijan automticamente Marcas, ttulos y otros textos: >>grid (rejilla) >>xlabel(tiempo) sita el nombre al eje x >>ylabel(posicin angular) sita el nombre al eje y >>title(servomecanismo de posicin) sita nombre al grfico en la parte superior >>text(2,6,tiempo de establecimiento) sita el texto en la posicin indicada >>gtext(perodo de la seal) sita el texto en la posicin seleccionada con el ratn >>ginput da un cursor que ofrece el valor que selecciona con el ratn. Puede marcar infinitos puntos, termina dando retorno

Grficos contra el tiempo


Hay que especificar primero el vector del tiempo y luego realizar el grfico. p.e.: >>t = 0:0.1:5; >>y=t; >>plot(t,y) dibuja el grfico de la variable y vs. t

Trazado De Dos Grficas En La Misma Pantalla


x = linspace(0,2*pi,30); y = sin(x); z = cos(x); plot(x,y,b,x,z,r.-) xlabel(x),ylabel(y)

Subdivisin de la pantalla grfica


>>subplot(rcp) r: fila (row) c: columna p: posicin Se emplea antes que el plot y mediante el mismo se divide la pantalla en dos o cuatro partes. >>subplot(211) divide en dos partes horizontalmente y realiza el grfico en la superior >>subplot(212) realiza el grfico en la inferior >>subplot(121) divide en dos partes verticalmente y realiza el grfico en la izquierda >>subplot(122) realiza el grfico en la derecha >>subplot(221) divide la pantalla en cuatro y realiza el grfico en la parte superior izquierda >>subplot(222) ... en la superior derecha >>subplot(223) ... en la inferior izquierda >>subplot(224) ... en la inferior derecha

Trazado de grficos mltiples con el comando subplot


x = linspace(0,2*pi,30); y = sin(x); z = cos(x); a = 2*sin(x).*cos(x); b = sin(x)./(cos(x)+eps);

subplot(221) plot(x,y),axis([0 2*pi 1 1]), title(sin(x)) subplot(222) plot(x,z),axis([0 2*pi 1 1]), title(cos(x)) subplot(223) plot(x,a),axis([0 2*pi 1 1]), title(2sin(x)cos(x)) subplot(224) plot(x,b),axis([0 2*pi 20 20]), title( sin(x)/cos(x)) >>legend: define rtulos en la grfica
>>figure : crea una nueva ventana grfica >>figure(n) hace que la ventana n sea la activa

Grficos logartmicos
>>loglog(x,y) grfico de y vs. x con escala logartmica en ambos ejes >>semilogx(x,y) ... eje x logartmico, eje y lineal >>semilogy(x,y) ... eje y logartmico, eje x lineal >> Hz=[20:10:100 200:100:1000 1500 2000:1000:10000]; >> spl=[76 66 59 54 49 46 43 40 38 22 ... 14 9 6 3.5 2.5 1.4 0.7 0 -1 -3 ... -8 -7 -2 2 7 9 11 12];

>> semilogx(Hz,spl,'--')
>> xlabel('Hz'),ylabel('spl(dB)') >> title('Niveles de presion sonora')

Trazado de un grfico polar


>>polar(theta,rho) diagrama polar: radio rho vs. ngulo theta en radianes t=linspace(0,2*pi); r = sin(2*t).*cos(2*t); polar(t,r) title( Grfico polar de sin(2t)cos(2t))

Trazado de dos grficos en la misma pantalla utilizando el comando hold


x = linspace(0,2*pi,100); y = sin(x); plot(x,y), xlabel(x) hold z = cos(x) plot(x,z) grid

Comandos para el control de la ventana grfica

shg
clf

trae el grfico hacia adelante


borra el grfico de la ventana grfica

clc

borra comandos de la lnea de comandos

home mueve el cursor a la parte superior izquierda

hold mantiene el grfico anterior en la ventana


hold off elimina la condicin anterior

Exportar textos o grficos desde MATLAB

Para exportar un grfico, vaya al men EDIT estando la ventana grfica activa y utilice el comando Copy Figure, llvelo a donde quiera y descrguelo con Paste. Para exportar texto, seleccinelo con el ratn y con el comando Copy, desde la ventana de comandos o del editor descrguelos donde quiera con el comando Paste. Si es un diagrama en bloques de Simulink, haga activa dicha ventana y busque en Edit el comando Copy Model to Clipboard y descrguelo con Paste donde desea. Para exportar una ventana de MATLAB, haga activa dicha ventana, oprima las teclas Alt+PrtSc y vaya a donde quiera exportarlo y descrguelo con Ctrl V.

El comando plot utilizado en el trazado de grficos bidimensionales se puede extender al caso tridimensional con el comando plot3. Grficos tridimensionales En este caso, los datos se suministran por tros y no por pares, o sea plot3(x1,y1,z1)

Ejemplo: >> t= linspace(0,10*pi); >> plot3(sin(t),cos(t),t) >> ttle(Hlice), xlabel(sin(x)), ylabel(cos(x)), zlabel(t)

Ejemplo: >> t= linspace(0,10*pi); >> plot3(sin(t),cos(t),t) >> ttle(Hlice), xlabel(sin(x)), ylabel(cos(x)), zlabel(t)

Grficos de malla y superficie tridimensional


MATLAB define una superficie de malla en los puntos de la coordenada z sobre una cuadrcula rectangular en el plano xy. Se forma un grfico mediante la unin con lneas rectas de los puntos adyacentes. El resultado es como una red de pesca. Es til en el trazado de grficas de dos variables o para visualizar grandes matrices. El primer paso para generar un grfico de mallas de una funcin de dos variables, z = f(x,y), es generar las matrices X y Y, que consisten de filas y columnas repetidas de las variables x y y, en una gama dada de valores. MATLAB tiene la funcin meshgrid para estos fines [X,Y] = meshgrid(x,y) Esta funcin crea una matriz X cuyas filas son copias del vector x, y una matriz Y cuyas columnas son una copia del vector y. Este par de matrices puede ser utilizado para evaluar funciones de dos variables. Ejemplo: Se desea generar un juego de puntos equidistantes en el plano x-y, entre los puntos -7.5 y 7.5 en ambos ejes >>x=-7.5:0.5:7.5; >>y=x; >>[X,Y] = meshgrid(x,y); Sea el caso de buscar la distancia al origen >> R=sqrt(X.^2+Y.^2) + eps >>Z = sin(R)./R ; La matriz R contiene el radio de cada punto en [X,Y].

Grficos de malla y superficie tridimensional

El agregar eps elimina la divisin por cero. La matriz Z contiene el seno del radio dividido por el radio para cada punto del plano. Con el comando mesh se genera la grfica. >>mesh(X,Y,Z)

El trazado de la superficie de la misma matriz Z, luce como el grfico de mallas, excepto que los espacios entre las lneas se rellenan de colores. Un grfico de este tipo se obtiene con la funcin surf. surf(X,Y,Z)

Expresiones y operadores lgicos

EnMatLab existen dos estructuras condicionales fundamentales los comandos if y switch.

La secuencia de casos se interrumpe tan pronto se verifique el primero de ellos.

El comando for: for<var-control>=<var-ini>:<paso>:<var-fin> <sentencias> end


for<var-control>=<vector-de-valores> <sentencias> end

Traspuesta de una matriz

Sintaxis

La orden breakhace que se termine la ejecucin del bucle for y/o while ms interno de los que comprenden a dicha sentencia. La sentencia continue hace que se pase inmediatamente a la siguiente iteracin del bucle foro while, saltando todas las sentencias que hay entre el continue y el fin del bucle en la iteracin actual.

La funcin input permite imprimir un mensaje en la lnea de comandos de MatLaby recuperar como valor de retorno un valor numrico o el resultado de una expresin tecleada por el usuario. Sintaxis: <identificador> =input(<Texto deseado>');

La funcin disp permite imprimir en pantalla un mensaje de texto o el valor de una matriz, pero sin imprimir su nombre. Las cadenas de caracteres son un caso particular de vectores. Sintaxis: disp('<Texto deseado>');

You might also like