You are on page 1of 23

Introduccin a Matlab

Departamento de Fsica y Matemtica Aplicada


Universidad de Navarra Espaa

Matlab es un programa interactivo para clculo numrico y tratamiento de datos. Contiene


muchas herramientas y utilidades que permiten adems diversas funcionalidades, como la presentacin grfica en 2 y 3 dimensiones. Esos tiles estn agrupados en "paquetes" (toolboxes). A Matlab se le pueden aadir paquetes especializados para algunas tareas (por ejemplo, para tratamiento de imgenes). Trabajar con Matlab comporta aprender un lenguaje simple. En esta introduccin se explican los elementos bsicos de este lenguaje. Matlab es un programa command-driven, es decir, que se introducen las rdenes escribindolas una a una a continuacin del smbolo (prompt) que aparece en una interfaz de usuario (una ventana). Esta introduccin contiene ejemplos que se pueden escribir directamente en la lnea de comandos de Matlab. Para distinguir esos comandos, junto con la respuesta del programa, se emplean un tipo de letra diferente: 2+2 ans = 4 Una manera de seguir esta introduccin consiste en abrir Matlab en otra ventana, e ir copiando y pegando el comando a continuacin del smbolo >>. Para ms informacin, se puede consultar el folleto "Getting Started with Matlab" o el manual de usuario (que estn en la biblioteca). Tambin puede consultarse la ayuda en lnea, como se explica ms adelante. O conectarse al servidor Web de Mathworks, la empresa que comercializa Matlab, donde pueden encontrarse -por ejemplo- programas que han escrito otros usuarios de Matlab. Este documento contiene los siguientes apartados:

Comandos bsicos Ayuda en lnea El entorno Matlab Vectores y matrices Polinomios Grficos "Scripts" Clculo simblico Sugerencias

Comandos bsicos
En esta seccin se explica cmo usar Matlab a modo de calculadora. Empecemos con algo sencillo: las operaciones matemticas elementales.
x=2+3 x = 5

Si no se asigna el resultado a ninguna variable, Matlab lo asigna por defecto a la variable ans (answer):
2+3 ans = 5

Para saber cul es el valor asignado a una determinada variable, basta introducir el nombre de la variable:
x x = 5

La notacin para las operaciones matemticas elementales es la siguiente: ^ exponenciacin * multiplicacin / divisin + suma resta El orden en que se realizan las operaciones de una lnea es el siguiente: primero, la exponenciacin; luego, las multiplicaciones y divisiones; y finalmente, las sumas y las restas. Si se quiere forzar un determinado orden, se deben utilizar parntesis, que se evalan siempre al principio. Por ejemplo, para hallar dos entre tres,

2/2+1 ans = 2

(en efecto: primero se calcula 2/2 y luego se suma 1).


2/(2+1) ans = 0.6667

Primero se calcula el parntesis (2+1) y luego se realiza la divisin. Dos observaciones. El punto decimal es . (no una coma). Y en Matlab, las maysculas y las minsculas son distintas. Es decir, X es una variable diferente de x. En Matlab estn tambin definidas algunas funciones elementales. Las funciones, en Matlab, se escriben introduciendo el argumento entre parntesis a continuacin del nombre de la funcin, sin dejar espacios. Por ejemplo:
y=exp(0) y = 1

(la funcin exp es la exponencial). He aqu una tabla con algunas funciones elementales:
sin cos tan sec csc cot exp log sqrt abs

seno coseno tangente secante cosecante cotangente exponencial logaritmo natural raz cuadrada valor absoluto

Para obtener las funciones trigonomtricas inversas, basta aadir una a delante del nombre. Y para las funciones hiperblicas, una h al final. Por ejemplo, atanh(x) es el arcotangente hiperblico de x:
z=atanh(2) z = 0.5493 + 1.5708i

(z es un nmero complejo).

Ayuda en lnea
Cmo obtener informacin sobre los comandos de Matlab. Este documento es tan slo una introduccin -muy resumida- del lenguaje y del manejo de Matlab. Antes de seguir, es conveniente indicar cmo puede obtenerse ms informacin sobre cualquier detalle referente a Matlab. Desde dentro de Matlab pueden obtenerse explicaciones sobre un tema particular. Hay varios mtodos. El comando help. Para obtener informacin sobre una determinada funcin, basta teclear desde la lnea de comandos help seguido del nombre de la funcin. Por ejemplo:

help round ROUND Round towards nearest integer. ROUND(X) rounds the elements of X to the nearest integers. See also FLOOR, CEIL, FIX.

Si se escribe slo help, se obtiene un ndice de temas. Tambin puede obtenerse informacin sobre uno de los temas de esa lista: as, help elfun proporciona informacin sobre las funciones matemticas elementales. La ventana de ayuda. Puede llamarse tecleando helpwin o bien escogiendo del men Help el tem Help Window. Se obtiene una ventana nueva, y haciendo doble click con el ratn sobre un captulo se

pasa a un elenco de los tems contenidos, que a su vez pueden escogerse para una explicacin ms detallada. Con los botones Back y Forward se navega hacia atrs o hacia adelante. Tambin puede escribirse directamente en la zona superior izquierda el nombre del comando deseado: por ejemplo, para buscar informacin sobre sqrt ...

En la barra See also aparecen comandos relacionados. La informacin es la misma que la obtenida con el comando help, pero con la comodidad de presentarse en una ventana aparte en vez de en la lnea de comandos. La ayuda interactiva. Se obtiene escogiendo del men Help el tem Help Desk, o tecleando helpdesk en la barra de comandos. Se lanza el navegador y se obtiene un documento de inicio con un ndice de temas en hipertexto donde estn los manuales y otras utilidades, como un buscador. Para leer el manual, se necesita el programa Acrobat Reader.

La informacin que se obtiene es mucho ms completa que en los otros dos casos, lo cual puede resultar inconveniente si uno desea simplemente, por poner un caso, conocer la sintaxis de una funcin. Una introduccin a Matlab ms rigurosa, extensa y comprensiva que este documento puede encontrarse en el epgrafe "Getting Started" del Help Desk.

El entorno Matlab
Para desenvolverse en la interfaz de usuario, llevar la cuenta de las variables, ...

Edicin de la lnea de comandos. Con las flechas del teclado se pueden recuperar las rdenes anteriores, sin tener que volver a teclearlas. As, en el caso de una equivocacin en un comando complicado

d2_f=(y2-2*y1+y3)/deltax^2) ??? -2*y1+y3)/deltax^2) | Missing operator, comma, or semi-colon.

en vez de volver a teclear todo, puede recuperarse la instruccin pulsando la tecla "flecha hacia arriba", desplazarse hasta el error (falta un parntesis) con la flecha hacia a la izquierda, y arreglarlo:
d2_f=(y2-2*y1+y3)/(deltax^2)

En ocasiones, es interesante no presentar el resultado en la pantalla (por ejemplo, cuando se trata de una lista de datos muy larga). Eso se consigue poniendo un punto y coma al final de la instruccin.

y=sqrt(4);

El resultado no aparece, pero sin embargo el clculo se ha realizado:


y y = 2

El comando who indica las variables con las que se est trabajando:

who Your variables are: Fy f indice manchas n_punt t t_m y

delta_f f_max

Comandos relacionados con el sistema operativo:

Present working directory


pwd

(directorio de trabajo actual) cd cambiar de directorio dir listado de los ficheros del directorio actual Estos comandos son muy similares a los anlogos de MS-DOS o UNIX. Guardar y cargar ficheros de datos. Se emplean los comandos save y load, respectivamente. o para guardar datos: save [nombre del fichero]

[variable] -ascii
o

para recuperar datos: load [nombre del fichero]

[variable] -ascii

Por ejemplo: con estas dos rdenes


cd a: save toto.dat y -ascii

se cambia el directorio de trabajo a a:\ y se guarda all el contenido de la variable y en el fichero toto.dat con formato texto (por eso se pone -ascii).

Vectores y matrices
La "especialidad" de Matlab es el manejo de matrices: Matlab son las siglas de Matrix Laboratory. Un vector se define introduciendo los componentes, separados por espacios o por comas, entre corchetes:
v=[sqrt(3) 0 -2] v = 1.7321 w=[1;0;1/3] w = 0 -2.0000

Para definir un vector columna, se separan las filas por puntos y comas:

1.0000 0 0.3333

La operacin transponer (cambiar filas por columnas) se designa por el apstrofe:


w' ans = 1.0000 v*w ans = 1.0654 v+w' ans = 2.7321 0 -1.6667 0 0.3333

Las operaciones matemticas elementales pueden aplicarse a los vectores:

Para crear un vector de componentes equiespaciados se emplean los dos puntos:


x=4:2:10 x = 4 6 8 10

(los componentes de x van desde 4 de 2 en 2 hasta 10). Para introducir matrices, se separa cada fila con un punto y coma:
M = [1 2 3 ;4 5 6 ;7 8 9] M = 1 2 3 4 5 6

7 8 9

Para referirse a un elemento de la matriz se hace as:


M(3,1) ans = 7

Para referirse a toda una fila o a toda una columna se emplean los dos puntos:
v1=M(:,2) v1 = 2 5 8

(v1 es la segunda columna de M). Con las matrices tambin funcionan las operaciones matemticas elementales. As
M^2 ans = 30 66 36 81 42 96

102 126 150

Si se quiere operar en los elementos de la matriz, uno por uno, se pone un punto antes del operador. Si se quiere elevar al cuadrado cada uno de los elementos de M, entonces
M.^2 ans = 1 4 9

16 25 36 49 64 81

Algunas funciones definidas sobre matrices: determinante inv matriz inversa poly polinomio caracterstico ' transpuesta
det

(Para ms informacin: help elmat)

Polinomios
En Matlab los polinomios se representan por vectores cuyas componentes son los coeficientes del polinomio. Sea

Este polinomio se representa por un vector p


p=[1 -3 +2] p = 1 -3 2

Para hallar las races del polinomio, se hace


roots(p) ans = 2 1

y si se quiere hallar el valor de P(x) para un determinado valor de x (por ejemplo, para x=0)

polyval(p,0) ans = 2

Grficos
Cmo presentar datos con Matlab. Las posibilidades de Matlab son muy grandes. Se indica a continuacin cmo realizar grficos sencillos. Para ms informacin, o para conocer la versatilidad de Matlab: captulo Handle Graphics Object del Help Desk, el manual Using MATLAB Graphics o la ayuda en lnea help graph2d. Veamos cmo se puede representar la funcin seno entre 0 y 10. Para empezar creemos una variable x que vaya de cero a 10:
x=0:0.1:10;

y a continuacin, calculemos sin(x) almacenando el resultado en la variable y:


y=sin(x);

Para trazar el grfico, se emplea la funcin plot:


plot(x,y)

y se obtiene en otra ventana el grfico:

Entre los muchos comandos que se pueden utilizar para modificar los grficos, es muy til el empleado para cambiar la escala de los ejes. La orden es
axis([x1 x2 y1 y2])

donde x1, x2 son los lmites inferior y superior del eje x, e y1 e y2 los del eje y. Para representar unos datos con smbolos de colores, se aade al comando plot, entre apstrofes, la especificacin. Vamos a crear una variable con dos filas que contenga los nmeros del 1 al 10 en la primera fila, y el doble de esos nmeros en la segunda, y dibujarlos con puntos rojos:
x(1,:)=0:10; x(2,:)=2*x(1,:); x x = 0 1 2 3 4 5 6 7 8 9 10

10

12

14

16

18

20

plot(x(1,:),x(2,:),'ro')

(para ver las especificaciones posibles, teclear help plot. Por ejemplo, 'ro' establece un grfico de color rojo: r y de puntos: o.) Si no se indica nada, el grfico se traza con una lnea azul. Otras funciones muy tiles: grid, que traza una cuadrcula, xlabel('ttulox')e ylabel('ttuloy'), que sirven para poner un ttulo en los ejes. Para imprimir una figura, basta seleccionar print del men de la figura.

"Scripts"
Archivos de rdenes: programar en Matlab. Realizar un programa en Matlab es fcil. Basta abrir un editor de texto (como el Bloc de Notas de Windows) y escribir los comandos uno a continuacin de otro. Luego ese fichero de texto debe guardarse con la extensin .m, y a eso se le llama un script:

Una vez guardado el fichero (en el ejemplo, ndata.m) en el directorio actual, desde la lnea de comandos de Matlab basta escribir ndata para que se ejecute el programa.

Clculo simblico
Matemticas en el ordenador. Hasta ahora, las operaciones que se han mostrado se han realizado con nmeros. El toolbox de clculo simblico permite realizar clculos abstractos:
diff('sin(x)') ans = cos(x)

Las expresiones simblicas se introducen entre apstrofes. A continuacin se da una tabla con algunas funciones de este toolbox, junto con un ejemplo de cada una:

diff diff('sin(x)') derivada int int('x^2') integral solve resolucin de ecuaciones solve('x^2-3*x+2=0') ezplot ezplot('exp(x)') grficos

Evidentemente, las expresiones pueden ser todo lo complicadas que se quiera ...
solve('x=cos(x)') ans = .73908513321516064165531208767387 int('(x^4+4*x^3+11*x^2+12*x+8)/((x^2+2*x+3)^2*(x+1))') ans = log(x+1)+1/8*(-4*x-8)/(x^2+2*x+3)1/4*2^(1/2)*atan(1/4*(2*x+2)*2^(1/2))

Introduccin a la programacin con Matlab


Departamento de Fsica y Matemtica Aplicada
Esta pgina pretende servir de gua para dar los primeros pasos en la programacin. Para aprender, el lenguaje que se emplee es -hasta cierto punto- irrelevante: lo ms importante son los conceptos. Una vez conocido un lenguaje, pasar a otro no suele resultar difcil. Como Matlab es un lenguaje simple, resulta idneo para los comienzos. Un programa consiste en una serie de instrucciones que se ejecutan secuencialmente (una detrs de otra). Por lo tanto, es requisito previo conocer esas instrucciones, y cmo escribirlas correctamente (sintaxis). Este documento consta de los siguientes apartados: Nociones preliminares Control del flujo Condiciones Ramificaciones Bucles Estilo Ejercicios y soluciones

Nociones preliminares
Antes de empezar ... La elaboracin de un programa para Matlab es muy sencilla. Basta abrir un documento de texto (se puede hacer con cualquier editor, Matlab trae uno incorporado), escribir las instrucciones tal como se pondran en la ventana de comandos y guardar el documento con la extensin .m (por ejemplo: miprog.m). Matlab reconoce automticamente los ficheros que tienen extensin .m: si en la ventana de comandos se introduce miprog las rdenes almacenadas en el fichero miprog.m se ejecutarn, una tras otra. A ese recorrido a travs de las instrucciones se le conoce con el nombre de flujo. Los comandos de un programa se denominan tambin sentencias. El hecho de guardar una serie de instrucciones (el cdigo) en un fichero tiene de por s algunas ventajas: evita el repetir las rdenes en la ventana de comandos. Pero la potencia de un programa se pone de manifiesto si en l se contienen instrucciones que controlan qu sentencias se ejecutan en cada circunstancia. As, un programa puede "decidir", llegado a un punto, ejecutar unos comandos u otros en funcin del valor que tome una variable, por poner un caso.

Control de flujo
Al proceso de toma de decisiones se le llama control del flujo Antes de ponerse a escribir el programa, sobre todo si es un poco largo o complejo, es til trazar un esquema, en lenguaje corriente, de lo que se quiere hacer. A eso se le denomina un diagrama de flujo. Si lo que se pretende est claro, escribir el programa se reduce a traducir el diagrama de flujo del castellano al lenguaje de Matlab.

Veamos un caso simple. Construyamos el diagrama de flujo de un programa que escoja un nmero al azar del 0 al 9 y nos pida que lo adivinemos. Una vez escogido el nmero, el programa debe informar si hemos acertado o no. El diagrama de flujo correspondiente es

Diagrama de flujo. En un diagrama de flujo ha de buscarse la claridad, la concisin, el rigor. Con un buen diagrama de flujo, gran parte del trabajo est hecho. Puede ser tentador comenzar a escribir directamente el programa en el editor, con la esperanza de hacerlo todo bien a la primera. Suele ser ms eficaz, sin embargo, escribir antes el diagrama de flujo, para luego intentar pasarlo al lenguaje informtico elegido.

Condiciones
Son las preguntas bsicas a las que se puede responder s o no Para implementar el control del flujo, son muy tiles unas expresiones que permiten comparar dos variables entre s o una variable con un valor fijo. En un programa, a veces es necesario preguntarse: es x mayor que y? Pues si x es mayor que y, entonces ..., y si no, ... ; o bien: caso de que la variable x sea menor que cero, hacer tal cosa. Las condiciones se construyen con operadores relacionales, como son los siguientes: > < == ~= <= >=

mayor que menor que igual que diferente que menor o igual que mayor o igual que

Una condicin, como se ha indicado, slo admite dos respuestas: verdadero o falso. As, a la pregunta es x mayor o igual que y?, que en el lenguaje de Matlab se expresa x>=y, slo caben dos respuestas posibles: s, es cierto, x es mayor o igual que y; o bien, no, es falso, x no es mayor o igual que y.

Dos observaciones. La primera: el operador relacional igual que se construye con dos smbolos ==. El motivo es el siguiente: si se escribe x=3, el resultado es que se le asigna a x el valor 3. No se hace ninguna pregunta. Si lo que se desea es preguntar es x igual a 3?, no se puede escribir x=3, pues en este caso x tomara el valor 3, independientemente de lo que valiera antes. En cambio, x==3 es el anlogo en lenguaje informtico a la pregunta: es x igual a 3?. Tras la pregunta x==3 la variable x sigue valiendo lo mismo que antes.La segunda observacin es una pequea astucia: la tilde ~ del operador diferente que se consigue apretando la tecla Alt y -sin soltarla- escribiendo con el teclado el nmero 126. En algunos sistemas operativos, tambin sirve apretar AltGr y, sin soltarla, apretar la tecla 4. Las condiciones se pueden agrupar en construcciones lgicas: condicin1 Y condicin2, condicin1 O condicin2, etctera. Consltese el manual de Matlab en lo relativo a este tpico. En resumen: con las expresiones relacionales se pueden realizar preguntas de respuesta unvoca (verdadero o falso), que permitan luego tomar una decisin.

Ramificaciones
Dependiendo de una condicin, el programa decide el curso que seguir El resultado de una condicin permite tomar una decisin, es decir, si la condicin es verdadera se ejecutan determinadas sentencias. El diagrama de flujo se ramifica:

Ramificacin if La ramificacin ms simple, expresada en este diagrama de flujo, se obtiene con la siguente sintaxis: if (condicin) sentencias end (lo que va en cursiva, hay que sustituirlo por las expresiones adecuadas; if y end son palabras clave del lenguaje informtico, y no se pueden utilizar para otra cosa, p. ej. una variable no puede -no debera- llamarse if). Un caso concreto:

if(length(sitios)>1) recta=polyfit(x,y,1); end Ledo en lenguaje corriente: si la longitud del vector sitios es mayor que 1, se realiza el ajuste lineal indicado en la instruccin recta=polyfit(x,y,1). Caso contrario (si la longitud del vector sitios es menor o igual a 1) esa instruccin no se ejecuta (y el programa sigue en la instruccin que venga despus de end). Existe la posibilidad de ejecutar ciertas sentencias si la condicin es verdadera, y otras diferentes si la condicin es falsa: if (condicin) sentencias A else sentencias B end dicho de otra manera: si la condicin se cumple, se ejecutan las sentencias A; si no, se ejecutan las sentencias B.

Diagrama de flujo de una ramificacin if / else Una vez se hayan ejecutado las sentencias que correspondan (las sentencias A si la condicin es verdadera, las sentencias B en caso contrario) el programa contina con las instrucciones que vengan despus de end. Es de sealar que las ramificaciones se pueden anidar (una condicin dentro de otra: dentro de las sentencias A o de las sentencias B en el anterior diagrama de flujo). El cdigo se vuelve ms complejo. Tambin se pueden construir ramificaciones con varias posibilidades: la sintaxis hace uso de las palabras clave if / elseif / elseif / ... / else / end. Se remite para una explicacin ms detallada a la ayuda de Matlab (trmino de bsqueda: elseif). Otra posibilidad de ramificacin mltiple la ofrece la construccin switch. La sintaxis es: switch variable case valor1,

sentencias A case valor2, sentencias B case ... ... end (Como antes, lo escrito en cursiva debe sustituirse por las expresiones adecuadas). Las palabras clave son switch, case, end. La ramificacin switch opera de la siguiente manera. Al llegar a la expresin switch variable, si variable tiene el valor valor1 se ejecutan las sentencias A; si variabletoma el valor valor2, las sentencias B; y as sucesivamente. Es importante notar que la variable slo debe tomar unos pocos valores: valor1, valor2, etc. para que el programa se ramifique en unas pocas ramas. No tiene sentido intentar una ramificacin switch con una variable que pueda tomar un nmero infinito de valores.

Bucles
Varias secuencias que se ejecutan repetidas veces? Un bucle Hay ocasiones en las que es necesario repetir el mismo conjunto de instrucciones muchas veces, cambiando algunos detalles. Pongamos un caso. Sea un vector x(i) con n componentes; se quiere construir la "media mvil" de x con tres elementos, que consiste en ir tomando la media aritmtica de cada tres puntos consecutivos. Es decir: desde i=2 hasta n-1, media(i-1)=(x(i)+x(i-1)+x(i+1))/3. (Detalles: se empieza a contar en i=2 porque para el primer elemento de x no existe el elemento anterior; y se acaba en n-1 por anloga razn; adems, el primer componente de media es el correspondiente a i=2, de ah que se asigne el resultado a media(i-1)). Eso es lo que se consigue con un bucle for, cuya sintaxis es: for contador=inicio:paso:fin, sentencias end Las palabras claves son for y end. Este bucle pone en marcha una variable llamada contador que va desde inicio hasta fin de paso en paso. Cada vez que las sentencias se ejecutan, contador aumenta en un valor paso (que si se omite, se le asigna automticamente el valor 1). Cuando contador llega al valor fin, el bucle se acaba y el programa contina con las sentencias que haya ms all de end.

Diagrama de flujo de un bucle for Obsrvese que un bucle como el indicado se implementa un nmero fijo de veces: desde inicio hasta fin de paso en paso. En ocasiones, sin embargo, no se sabe de antemano cuntas veces habr que ejecutar las sentencias del bucle. Por ejemplo: si es necesario repetir una serie de sentencias hasta que se cumpla una determinada condicin, y no se sabe a priori cuntas veces ser necesario realizar esas operaciones. En ese caso se emplea un bucle while: while(condicin), sentencias end Este bucle ejecuta las sentencias mientras la condicin sea verdadera.

Diagrama de flujo de un bucle while

Es posible sustituir la condicin por una variable. En efecto: una variable que toma el valor cero corresponde a una condicin falsa. Si la variable toma un valor diferente de cero, es equivalente a una condicin verdadera. As, se puede escribir x=10; while(x) sentencias x=x-1; end Para x=10, la "condicin" es verdadera puesto que x es diferente de cero. Ntese que el contador x hay que modificarlo manualmente (lnea x=x-1) puesto que, al revs que lo que ocurre con el bucle for, este no gestiona ningn contador. En cuanto x tome el valor cero, la "condicin" es falsa y el bucle acaba. Atencin: es fcil caer en bucles infinitos. En el ejemplo anterior, si falta la lnea x=x-1 y las sentencias no modifican el valor de x, la "condicin" siempre ser cierta (pues x=10) y el programa nunca saldr del bucle: ejecutar una y otra vez las sentencias. El programa se "cuelga", y hay que interrumpirlo desde el teclado apretando las teclas Ctrl+C.

Estilo
Un programa elegante suele ser un buen programa Empecemos diciendo que, en general, para realizar una tarea particular se pueden emplear muchos programas diferentes que den el resultado correcto. Cul es el ms eficiente? No es una pregunta trivial! Hay que ir probando para mejorar la velocidad. Con la prctica -y el estudio- se descubren las maneras ms rpidas de implementar las instrucciones entre todas las posibles. La confeccin de programas se vuelve frecuentemente una tarea rutinaria donde el orden facilita las cosas. Repasar un programa una y otra vez, modificando poco a poco el cdigo para depurarlo, exige una cierta disciplina. Aunque cada uno tenga sus preferencias, es conveniente desarrollar algunos hbitos. Me atrevo a recomendar algunos:

El programa debe resultar de fcil lectura. As, pasado el tiempo, es ms sencillo revisarlo. Los nombres de las variables, en la medida de lo posible, deben ser autoexplicativos. La siguiente porcin de cdigo, escrita de dos maneras equivalentes, lo muestra. Por qu llamar x o N a una variable? Los nombres abstractos restan claridad al programa. N=10; x=rand(1,N); y=zeros(1,N); for i=1:N, y(i)=sum(x(1:i)); end num_pts=10; prob=rand(1,num_pts); prob_acum=zeros(1,num_pts); for indice=1:num_pts, prob_acum(indice)=sum(prob(1:indice)); end

Ambos cdigos son equivalentes y se ejecutarn igual de rpido (los nombres largos de las variables no influyen en la velocidad de ejecucin).

Introducir comentarios en el programa. Los comentarios son lneas que no se ejecutan, en las que se escriben aclaraciones explicativas. Para que una lnea no se ejecute, basta escribir al principio de ella el smbolo %. As:

%escala: 102 pixels = 8 mm d_m=8/102; Un programa con comentarios es ms fcil de entender.

Suele ser bueno definir las variables al principio. Ello evita tener que buscarlas a lo largo del cdigo para cambiar su valor cuando sea necesario. Adems, si es posible, es mejor definir los vectores y matrices al principio con su dimensin adecuada. En el caso de que haya que ir rellenando los valores de un vector, el programa va ms rpido si se define el vector vaco al principio (con el comando ones o zeros) que ir aadiendo componentes al vector conforme se van calculando. Para ver dnde empiezan y dnde acaban los bucles y ramificaciones, es costumbre indentar (introducir una sangra) en las lneas contenidas en ellos. Eso resulta de especial ayuda en los bucles y condiciones anidados.

Ejercicios
Los problemas ms interesantes suelen ser los que uno se encuentra en la vida real ...

A. Ejercicios
Escribir un programa que tome un nmero entero al azar entre el 0 y el 9, pregunte un nmero al usuario y le informe si acert o no. Escribir un programa que tome un nmero entero al azar entre el 0 y el 9, y le pregunte un nmero al usuario hasta que acierte. Escribir una funcin que devuelva el valor absoluto del argumento. (Nota.- Ya existe en Matlab: abs(x)). Escribir una funcin que devuelva el radio (distancia al origen), recibiendo como argumento las coordenadas cartesianas (x,y). Escribir un programa que, tras pedir al usuario un nmero, le informe de si es par, impar o no entero. Escribir un programa que calcule las N primeras fracciones del tipo 1/i, tras pedir N al usuario. Escribir un programa que calcule los cuadrados de los nmeros enteros, hasta que el cuadrado sea mayor o igual que 100.

B. Proyectos
Realizar una criba de nmeros primos, esto es, elaborar un programa que calcule en el menor tiempo posible la mayor cantidad de nmeros primos consecutivos partiendo de los ms pequeos.

You might also like