Sunteți pe pagina 1din 19

12/03/2013

Se ver a continuacin una forma sencilla de leer variables desde teclado y escribir mensajes en la pantalla del PC. Ms adelante se considerarn otros modos ms generales y complejos de hacerlo.
Funcin input La funcin input permite imprimir un mensaje en la lnea de comandos de MATLAB y recuperar como valor de retorno un valor numrico o el resultado de una expresin tecleada por el usuario. Despus de imprimir el mensaje, el programa espera que el usuario teclee el valor numrico o la expresin. Cualquier expresin vlida de MATLAB es aceptada por este comando. El usuario puede teclear simplemente un vector o una matriz. En cualquier caso, la expresin introducida es evaluada con los valores actuales de las variables de MATLAB y el resultado se devuelve como valor de retorno. Vase un ejemplo de uso de esta funcin:

12/03/2013

n = input('Teclee el nmero de ecuaciones') Otra posible forma de esta funcin es la siguiente (obsrvese el parmetro s): nombre = input('Cmo te llamas?','s') En este caso el texto tecleado como respuesta se lee y se devuelve sin evaluar, con lo que se almacena en la cadena nombre. As pues, en este caso, si se teclea una frmula, se almacena como texto sin evaluarse.

Funcin disp

La funcin disp permite imprimir en pantalla un mensaje de texto o el valor de una matriz, pero sin imprimir su nombre. En realidad, disp siempre imprime vectores y/o matrices: las cadenas de caracteres son un caso particular de vectores. Considrense los siguientes ejemplos de cmo se utiliza:
disp('El programa ha terminado') A=rand(4,4) disp(A) Ejectense las sentencias anteriores en MATLAB y obsrvese la diferencia entre las dos formas de imprimir la matriz A.

12/03/2013

Los ficheros ejecutables son ficheros de texto que incluyen una serie de comandos Matlab. Si una tarea Matlab la vamos a ejecutar muchas veces, es buena idea escribir un fichero con estos comandos para poder ejecutarlos tantas veces como queramos. La edicin del fichero ejecutable la realizamos con un editor cualquiera. Si nos resulta ms cmodo, podemos utilizar el editor que incorpora MATLAB y al que invocaremos desde la lnea de comandos como: >>edit Los ficheros ejecutables de MATLAB (llamados ficheros M) deben tener como extensin .m.

En el ejemplo que damos a continuacin, crearemos un programa que calcula el factorial de 6: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Este es un programa no muy util, %que calcula el factorial de 6 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% n=6; fac=1; for i=2:n fac=fac*i; end Fac

12/03/2013

Si guardamos esto en el fichero fac.m en el directorio de trabajo (o cualquier otro incluido en el path) y tecleamos el comando fac, obtenemos : >> fac fac = 720 Otra forma: factorial(6) ans = 720 Para poder calcular el factorial para distintos nmeros deberemos crea una subrutina o funcin MATLAB.

MATLAB posee un lenguaje de programacin que (como cualquier otro lenguaje) dispone de sentencias para realizar bifurcaciones y bucles.

Las bifurcaciones permiten realizar una u otra operacin segn se cumpla o no una
determinada condicin. La Figura siguiente muestra tres posibles formas de bifurcacin.

12/03/2013

Los bucles permiten repetir las mismas o anlogas operaciones sobre datos distintos. Mientras que en C/C++/Java el "cuerpo" de estas sentencias se determinaba mediante llaves {...}, en MATLAB se utiliza la palabra end con anloga finalidad. Existen tambin algunas otras diferencias de sintaxis. La Figura muestra dos posibles formas de bucle, con el control situado al principio o al final del mismo. Si el control est situado al comienzo del bucle es posible que las sentencias no se ejecuten ninguna vez, por no haberse cumplido la condicin cuando se llega al bucle. Sin embargo, si la condicin est al final del bucle las sentencias se ejecutarn por lo menos una vez, aunque la condicin no se cumpla. Muchos lenguajes de programacin disponen de bucles con control al principio ( for y while en C/C++/Java) y al final (do while en C/C++/Java). En MATLAB no hay bucles con control al final del bucle, es decir, no existe la construccin anloga a do ... while. Las bifurcaciones y bucles no slo son tiles en la preparacin de programas o de archivos

*.m. Tambin se aplican con frecuencia en el uso interactivo de MATLAB, como se ver
ms adelante en algunos ejemplos.

En su forma ms simple, la sentencia if se escribe en la forma siguiente (obsrvese que a diferencia de C/C++/Java la condicin no va entre parntesis, aunque se pueden poner si se desea): if condicion sentencias end Existe tambin la bifurcacin mltiple, en la que pueden concatenarse tantas condiciones como se desee, y que tiene la forma: if condicion1 bloque1 elseif condicion2 bloque2 elseif condicion3 bloque3 else %opcin por defecto, cuando no se cumplan las condiciones 1,2,3 bloque4 end

Donde la opcin por defecto else puede ser omitida: si no est presente no se hace nada en caso de que no se cumpla ninguna de las condiciones que se han revisado.

12/03/2013

Operadores Lgicos: Para crear condiciones debemos conocer tanto los operadores relacionales como los operadores lgicos.

Ejemplo de uso de if: nro = input('Ingrese un nmero positivo: '); if mod(nro,2)==0 disp('es par'); else disp('es impar'); end Ejemplo de uso de if/elseif: nro = input('Ingrese un nmero positivo: '); if nro==1 disp('Ud. ingreso 1'); elseif nro==2 disp('Ud. ingreso 2'); elseif nro==3 disp('Ud. ingreso 3'); else disp('El nmero es mayor que 3'); end

12/03/2013

Programa donde ingresan 4 notas por teclado, se elimina la menor y saca el promedio
n1 = n2 = n3 = n4 = input('ingrese la input('ingrese la input('ingrese la input('ingrese la primera nota = ') segunda nota = ') tercera nota = ') cuarta nota = ')

if (n1<n2 & n1<n3 & n1<n4 ) fprintf('la nota eliminada es: %1.2f\n',n1); promedio = (n2+n3+n4)/3; %fprintf('la nota promedio es: %1.2f\n',promedio); elseif (n2<n1 & n2<n3 & n2<n4 ) fprintf('la nota eliminada es: %1.2f\n',n2); promedio = (n1+n3+n4)/3; %fprintf('la nota promedio es: %1.2f\n',promedio); elseif (n3<n1 & n3<n2 & n3<n4 ) fprintf('la nota eliminada es: %1.2f\n',n3); promedio = (n1+n2+n4)/3; %fprintf('la nota promedio es: %1.2f\n',promedio); elseif (n4<n1 & n4<n2 & n4<n2 ) fprintf('la nota eliminada es: %1.2f\n',n4); promedio = (n1+n2+n3)/3; %fprintf('la nota promedio es: %1.2f\n',promedio); end fprintf('la nota promedio es: %1.2f\n',promedio);

La sentencia for repite un conjunto de sentencias un nmero predeterminado de veces. La siguiente construccin ejecuta sentencias con valores de i de 1 a n, variando de uno en uno. for i=1:n end For anidados: for i=1:n for j=1:m sentencias end end sentencias

12/03/2013

En el siguiente ejemplo se presenta el caso ms general para la variable del bucle (valor_inicial: incremento: valor_final);

for i=n:-0.2:1 sentencias end

Ejemplo
x=0; for i=1:4 for j=1:4 x=x+1; A(i,j)= x; end end

A=zeros(10); for i=1:10 for j=1:10 A(i,j)=rem( i+j, 10); end; end
>> A

>A A= 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

A= 2 3 4 5 6 7 8 9 0 1 3 4 5 6 7 8 9 0 1 2 4 5 6 7 8 9 0 1 2 3 5 6 7 8 9 0 1 2 3 4 6 7 8 9 0 1 2 3 4 5 7 8 9 0 1 2 3 4 5 6 8 9 0 1 2 3 4 5 6 7 9 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0

12/03/2013

En el siguiente ejemplo se presenta una estructura correspondiente a dos bucles anidados. La variable j es la que vara ms rpidamente (por cada valor de i, j toma todos sus posibles valores): for i=1:m for j=1:n end end

sentencias

Una ltima forma de inters del bucle for es la siguiente (A es una matriz): for r=A end

sentencias

En la que la variable r es un vector que va tomando en cada iteracin el valor de una de las columnas de A.

La sintaxis de la estructura while es la siguiente. while condicion sentencias end Donde condicion puede ser una expresin vectorial o matricial. Las sentencias se siguen ejecutando mientras haya elementos distintos de cero en condicion, es decir, mientras haya algn o algunos elementos true. El bucle termina cuando todos los elementos de condicion son false (es decir, cero). Ejemplo de uso de while: nro = input('Ingrese un nmero positivo: '); i=0; while i<=nro disp(i); i=i+1; end;

12/03/2013

Ejemplo de uso de while con break (corta el bucle): nro = input('Ingrese un nmero positivo: '); i=0; while i<=nro disp(i); i=i+1; if i==4 break; end; end;

A lo mejor queremos controlar en un condicional que si se da una ocasin muy excepcional, como algn posible error que tengamos previsto, el programa no continue en el condicional, sino que queremos que salga fuera y se muestre por pantalla algn mensaje informando del error.

10

12/03/2013

La sentencia switch realiza una funcin anloga a un conjunto de if...elseif concatenados. Su forma general es la siguiente: switch expresion case case_expr1 comandos case case_expr2 comandos ... otherwise % opcin por defecto comandos end

Por ejemplo si queremos realizar acciones distintas en funcin del valor de una variable entera podemos escribir: A = 1; B = 2; switch A + B case 3 disp('el resultado es 3') case 5 disp('el resultado es 5 ') otherwise disp('el resultado ni es tres ni cinco') end

11

12/03/2013

Grafica vectores plot(X,Y) plot(X) plot(X, Y, simbolo)

b g r c m y k w

blue green red cyan magenta yellow black white

. point solid o circle : dotted x x-mark -. dashdot + plus -- dashed * star (none) no line s square d diamond v triangle (down) ^ triangle (up) < triangle (left) > triangle (right) p pentagram h hexagram

12

12/03/2013

x=[1:0.1:10];y=sin(x);plot(x,y);

xlabel(eje x); xlabel(eje y);title(funcin seno); legend(sen x) ;

13

12/03/2013

hold on; hold off;

Permite hacer varios grficos en una sola pantalla.

Sintaxis: subplot(abc) a es filas, b columnas, numero de figura.

14

12/03/2013

Ejemplo: subplot(221) x=[0:0.1:10];y=sin(x); plot(x,y);grid on;xlabel('eje x'); ylabel('eje y'); title('fig 1'); legend('sen x'); subplot(222) x=[0:0.1:10];y=cos(x); plot(x,y);grid on;xlabel('eje x'); ylabel('eje y'); title('fig 2'); legend('cos x');

subplot(223) x=[0:0.1:10];y=10*sin(x); plot(x,y);grid on;xlabel('eje x'); ylabel('eje y'); title('fig 3'); legend('10sen x'); subplot(224) x=[0:0.1:10];y=10*cos(x); plot(x,y);grid on;xlabel('eje x'); ylabel('eje y'); title('fig 4'); legend('10*cos x');

15

12/03/2013

Resuelve simblicamente ecuaciones algebraicas.

Sintaxis: [x, y ,z]=solve(eq1',eq2',, var1,var2,) [x, y ,z]=solve(eq1',eq2',)

16

12/03/2013

Ejemplo: Resolver el sistema de ecuaciones: 3*x+2*y-z=10 -x+3*y+2*z=5 x-y-z=-1 [x, y ,z]=solve('3*x+2*y-z=10','x+3*y+2*z=5','x-y-z=-1')

Un conjunto de lneas de cdigo que cumple con una tarea determinada: sum, root, pole, sqrt, ect. Pueden tener o no entradas y salidas en general las tienen. Tienen un sintaxis en cada cdigo.

17

12/03/2013

En MATLAB tienen las sintaxis: [out1 out2 ]= nombre(in1 in2);

Orden y no perder lo que el cdigo hace.

Ejemplo 1: function [a b c]=funcion1(X, Y, Z) a= X +Y + Z; b= X*Y*Z; c= [a b X Y Z]; Se llama de la funcin principal o de commad

window.

18

12/03/2013

Ejemplo 2: function [] funcion2() D=1; pause(1); Diplay(estas en la funcin funcion2); No hay salidas ni entradas

19

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