Sunteți pe pagina 1din 45

CAPTULO 0 - MATLAB

Acolitando la vagancia!! Grupo SENUMA 2014

Contenido
Variables, Scripts, Operaciones 2. Visualizacin y Programacin 3. Solucin de Ecuaciones y ajuste de datos 4. Imgenes y animaciones
1.

Condiciones
Vamos a dedicar 4 clases de 2 horas cada una
Se debe desarrollar todo lo trabajo en clase Los ejercicios requeridos deben ser remitidos a

pjsalazar@unicauca.edu.co en formato .doc incluyendo cdigo explicado lnea por lnea.


Requisitos: Recordar programacin bsica Recordar aritmtica y algebra lineal bsicas

Directorio Workspac e

Administrad or de carpetas

Ventana de comandos

Detalles de archivos

Historial de comando s

Creando Carpetas
Las carpetas nos ayudan a organizar el trabajo
Para crear una nueva carpeta hacer click derecho en el

administrado de carpetas y escoger New Folder


Crear una nueva carpeta con el nombre dia1 (no usar

espacios)
Doble click en dia1, all vamos a trabajar

Help y Doc
help Comando de ayuda, el mas importante >> help sin (muestra la ayuda bsica del comando sin)
doc >>doc sin (muestra la ayuda completa del comando sin)

Scripts
Scripts: Coleccin de comandos ejecutados en secuencia Se escriben dentro del editor de Matlab Se guardan como archivos .m
Para crear uno nuevo click en:

El editor

ruta

Indicador de errores comentarios Nmeros de lnea

Puntos de ejecucin

Caractersticas de los Scripts


Todo lo que tenga % adelante es un comentario
Las primeras lneas comentadas son la ayuda del script Comenten bien!!

Los scripts son estticos, no hay entradas ni salidas

explicitas
Todas las variables creadas y modificadas existen en el

workspace incluso si se detiene el script

Ejercicio
Cree un script: holamundo
Cuando se lo ejecute debe mostrar: Hola mundo, vamos a repasar Matlab Use disp para mostrar el texto Las cadenas se colocan entre comillas simples:
%holamundo.m %mi primer programa en matlab disp('Hola mundo'); disp('Voy a aprender matlab');

Variables
Matlab es un lenguaje donde no hay que inicializar

variables
Soporta varios tipo de variables: >>3.84 (64 bits doble precisin, por defecto) >>a (caracteres de 16 bits)

La mayora de las variables son vectores o matrices que

contienen nmeros o caracteres


Hay otras: Complejas Simblicas

Nombrando variables
Para crear una variables simplemente se le asigna un

nmero
>> var1=3.14 >>micadena=hola mundo

Nombres de variables: El primer carcter debe ser una letra Luego se puede usar cualquier combinacin Pilas con las maysculas var1 diferente de Var1

No usar en los nombres de variables!


i y j solo pueden usarse para nmeros complejos
pi tiene un valor de 3.1415926 ans guarda el ltimo valor no asignado

Inf y Inf son infinito positivo y negativo


NaN representa No es un nmero

Escalares
A una variable se le puede dar un valor explcito >>a=10 Aparece en el worlspace!
O como una funcin de valores explcitos y variables

existentes
>>c=1.3*45-2*a

Para que la salida no se muestre (puede tomar MUCHO

tiempo) se coloca punto y coma al final


>>a=10;

Arreglos
Como en todo lenguaje de programacin, los arreglos son

muy importantes
Hay dos claes (1) Matrices de nmeros reales o complejos (2) celdas de arreglos de objetos (estructuras avanzadas de datos)
MATLAB hace que trabajar con vecotores sea fcil

Vectores fila
Para crear un vector fila se coloca coma o espacio entre

cada valor, encerrados en corchetes cuadrados


>>fila=[1 2 5.4 -6.6 ] >>fila=[1,2,5.4,-6.6];

Vectores columna
Para crear un vector columna se coloca punto y coma

entre cada valor, encerrados en corchetes cuadrados


>>columna=[4;2;7;4]

Matrices
Se hacer tal como los vectores
Elemento a elemento: a= [1 2;3 4]; O encadenando vectores o matrices (!pilas dimensiones!)

save / clear / load


save guarda las variables a un archivo >> save mi_archivo a b Guarda las vairiables a y b en el archivo my_archivo.mat en la carpeta donde se est trabajando
clear quita las variables del workspace >>clear a b Elimina a y b del workspace load carga variables al workspace >>load mi_archivo

Ejercicio: Variables
Cree una variable start usando la funcin clock
Cul es el tamao de start?, Es fila o columna? Qu contiene start? (usar help clock)

Convierta el vector start en una cadena (string), use la

funcin datestr y nombre a la nueva variable startString Guarde start y startString en un archivo .m como startTime

Ejercicio: Variables
Lea y muestre la hora y fecha actuales: En holamundo.m lea la variables que acaba de salvar, use load Muestre el siguiente texto: Mi repaso de Matlab empez el: Para mostrar texto use el comando disp

Operaciones bsicas con escalares


Operaciones aritmticas (+,-,*,/) 7/45 (1+i)*(2+i) 1/0 0/0 Exponentes(^) 4^2 (3+4*j)^2 Expresiones complicadas USAR PARNTESIS ((2+3)*3)^0.1 La multiplicacin no es implcita incluso con los parntesis 3(1+0.7) da error Para limpiar la ventana se usa clc

Funciones incorporadas
Matlab tiene una gigantesca biblioteca de funciones

incorporadas
Se las llama con el argumento entre parntesis

sqrt(2)
log(2), log10(0.23) cos(1.2), atan(-.8) exp(2+4*i) round(1.4), floor(3.3), ceil(4.23)

angle(i);

abs(1+i);

Ejercicios: Escalares
El aprendizaje de matlab tiene ritmo exponencial, aada

lo siguiente al script holamundo Si la constante de tiempo de aprendizaje es 1.5 das, calcule los segundos que hay en 1.5 das y llame a esta variable tau Si esta parte del curso durar 4 das, calcule el numero de segundos en 4 das, llame a esta variable findeclase Esta ecuacin describe el ndice de aprendizaje como funcin del tiempo:

= 1

Ejercicios: Escalares
Que tanto sabrn de matlab al final de esta clase?,

nombre a esta variable conocimientoalfinal Usando el valor de conocimientoalfinal, muestre la fase:


Al final de esta clase sabr x% de matlab

Para convertir un numero a una cadena use num2str

Traspuesta
El operador de transposicin convierte un vector columna

en un vector fila y viceversa


>>a=[1 2 3 4+i] >>transpose(a) >>a >>a.

El apostrofe da la transpuesta hermiciana, es decir hace

las transposicin y conjuga todos los nmeros complejos


Para vectores de nmeros reales . y dan el mismo

resultado

Suma y resta de vectores


La suma y resta de vectores son operaciones donde el tamao de los

vectores y matrices deben coincidir

La siguiente operacin da error:


>>c=fila+columna

Hay que usar la transpuesta para que los tamaos coincidan:


>>c=fila+columna >>c=fila+columna

Se pueden sumar o multiplicar todos los elementos de un vector:


>>s=sum(fila)
>>p=prod(fila)

Nota
Todas las funciones que funcionan en escalares

funcionan en vectores
>>t=[1 2 3]; >>f=exp(t); Hace lo mismo que: >>f=[exp(1) exp(2) exp(3)];

Si hay dudas consultar la ayuda


Los operadores * / ^ tienen dos modos de operacin

Operadores y elementos
Para realizar operaciones que tienen en cuenta la posicin de los

elementos se usa el punto antes del operador: .* ./ .^ las dimensiones de los vectores deben coincidir

Operadores (estandar)
La multiplicacin se puede hacer estndar o elemento a

elemento La multiplicacin estandar (*) resulta en un producto punto o un producto externo La potencia (^) solo se puede aplicar en matrices cuadradas o escalares La divisin izquierda y derecha (/ \) es lo mismo multiplicar por la inversa

Ejercicio: Operaciones entre vectores


Calcule cuantos segundos han pasado desde le inicio de

la clase En holamundo.m cree las siguientes variables:


segpormin, segporhora, segpordia, segpormes (mes 30 das, ao

12 meses) que contengan el nmero de segundos en cada periodo Cree un vector fila llamado conversionsegundos que contenga los elementos en orden de mayor a menor periodo y finalice con un 1 Cree un vector horaactual usando clock Calcule tiempotranscurrido restando horaactual de strart Calcule t (tiempo pasado en segundos) realizando el producto punto de conversionsegundos y tiempotrasncurrido

Ejercicio: Operaciones con vectores


Muestre el estado actual de su aprendizaje: Calcule conocimientoactual, usando la misma relacin de antes con el t que acaba de calcular Muestre en una lnea de texto cuanto sabe

Inicializacin automtica
Inicialice vectores de ceros, unos y nmeros aleatorios >>o=ones(1,10) >>z=zeros(23,1) >>r=rand(1,45) >>n=nand(1,69)
La forma general es: >>var=zeros(nmero de filas, nmero de columnas)

Inicializacin automtica
Para incializar un vector lineal de valores se usa linspace >>a=linspace(0,10,5) a empieza en cero, termina en 10 (incluyendoilo) y tiene 5 valores
Se puede usar el operador dos puntos : >>b=0:2:10 B empieza en 0, se incrementa en pasos de 2 y termina en o antes de 10 >>c=1:5 C empieza en 1 y termina en 5, no se especifica el incremento, por defecto es 1 Para inicializar con escala logartmica se usa logspace

Ejercicio: funciones vectoriales


Calcule su trayectoria de aprendizaje En hoalmundo.m cree un vector lineal de tiempo tVec que tenga 10000 valores entre 0 y findeclase Calcule el valor de su conocimiento (llamelo vectorconocimiento) en cada uno de los puntos de tVec usando la ecuacin ya trabajada

Indexacin de vectores
Matlab empieza a indexan en 1 NO en 0
a(n) retorna el n esimo valor

El argumento de indexacin puede ser un vector, en este

caso cada elemento se examina individualmente y se retorna como un vector del mismo tamao del vector que indexa

Indexacin de matrices
Las matrices se pueden indexar de dos formas Usando subndices (filas y columnas) Usando ndices lineales (como si la matriz fuera un vector)

Para seleccionar filas o columnas de una matriz se usa :

Ejercicio: Indexacin
Cuando conoceran el 50% de matlab? Primero, encuentren la poscicin del valor donde vectorconocimiento es mas cercano a 0.5, matematicamente, esto es | vectorconocimiento -0.5| esta en un mnimo (use abs y min) Luego use ese indice para locallizar el tiempo correspondiente en tVec y llamelo tiempomedio Finalmente muesrte la linea 'Sabr la mitad de Matlab despues de: X dias Convierta tiempomedio a das usando segpordia

Graficacin
Ejemplo: >>x=linspace(0,4*pi,10) >>y=sin(x)
Grafique los valores vs sus indices: >>plot(y)

Usualmente se grafica y vs x >>plot(x,y)

help clock start=clock; size(start) help datestr startString=datestr(start); save startTime start startString

load startTime disp([Mi repaso de Matlab empez el:' startString]);

segundospordia=24*3600; dia1_5=1.5*segundospordia; tau=num2str(dia1_5); disp(['El nmero de segundos en un da es:' tau]) dia_5=5*segundospordia; endofclass=num2str(dia_5); disp(['El nmero de segundos en 5 das es:' endofclass]) conocimientoalfinal=1-exp(-endofclass/tau); disp(['Al final de este da curso sabr ' num2str(conocimientoalfinal*100)

segundosporminuto=60; segundosporhora=segundosporminuto*60; segundospormes=segundospordia*30.5; segundosporanno=segundospormes*12; segundosConversion=[segundosporanno,segundospormes,segundospordia,segundos porhora,segundosporminuto,1]; horaactual=clock; tiempotrasncurrido=horaactual-start; t=segundosConversion*tiempotrasncurrido'

conocimientoalfinal=1-exp(-t/str2num(tau)); disp(['En este momento se: ' num2str(conocimientoalfinal*100) '% de Matlab'])

tVec=linspace(0,str2num(endofclass),10000); conocimientovector=1-exp(-tVec/str2num(tau));

[val,ind]=min(abs(conocimientovector-0.5)); halftime=tVec(ind); disp(['Sabr la mitad de Matlab despues de: ' num2str(halftime/segundospordia) 'das']); figure=plot(tVec/segundospordia,conocimientovector)

S-ar putea să vă placă și