You are on page 1of 37

PROGRAMACIN DE MATLAB

UNIVERSIDADNACIONAL DEINGENIERIA
FACULTAD DEINGENIERIA ELECTRICA YELECTRONICA
KRAQ
PROGRAMACIN DE MATLAB
Funciones de conversin
int2str
num2str
str2double
str2num
mat2str
Convierte un numero entero en cadena de caracteres
Convierte un numero real en cadena de caracteres, con
cuatro cifras decimales por defecto
Convierte una cadena de caracteres , que seria una representacin
de caracteres ASCII de un valor real o complejo a un nmero de
doble precisin
Convierte una cadena de caracteres , que seria una representacin
de caracteres ASCII de un valor numrico
Convierte una matriz a cadena de caracteres
>> num2str(pi)
ans =
3.1416
>> num2str(pi,8)
ans =
3.1415927
0 10 20 30 40 50 60 70 80 90 100
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
DESVIACION = 0.27799
PROGRAMACIN DE MATLAB
q=rand(1,100);
dsv=std(q);
desv1=num2str(dsv);
plot(q);
title(['DESVIACION = ',desv1]);
a='8';
st=str2num(a);
z=st+15
z =

23
PROGRAMACIN DE MATLAB
Operadores relacionales
PROGRAMACIN DE MATLAB
Operadores lgicos
Operador Ejemplo
& A&B
| A|B
~ ~A
xor Xor(A,B)
Como ya se mencion en el primer caso te devuelve un valor numrico.
En el segundo caso el texto tecleado como respuesta se lee y se devuelve sin
evaluar, con lo que se almacena la cadena nombre
PROGRAMACIN DE MATLAB

Lectura y escritura interactiva de variables
Comando de entrada: input


Permite escribir 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.
>> n=input('Teclee el nmero de ecuaciones: ')
>> nombre=input('Cmo te llamas?','s')
los vectores
PROGRAMACIN DE MATLAB

Lectura y escritura interactiva de variables
Comando de salida: 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




La cadena de caracteres
son un caso particular de
z) disp(' x y
disp(randn(5,3))
x
0.3807
-1.5077
-1.0979
0.0519
-0.4202
y
-0.8339
0.1347
-0.0013
-1.3061
0.4361
z
0.1918
0.2571
0.8237
-1.1328
0.7079
Se pueden mostrar datos y matrices
Comando de salida: disp
Ejercicios :
1. Disee un programa en el cual dada una matriz A cuadrada cualquiera de
tamao n ingresado en por el usuario, permita mostrar sus autovalores.
2. Ingrese los parmetros A, f y el tiempo de duracin de la siguiente seal;
grafquelo y muestre el valor medio de dicha seal
Lectura y escritura interactiva de variables
PROGRAMACIN DE MATLAB
Puede mostrar mltiples items en una misma lnea
>> x=[1 2 3 4];
>> disp(['Los valores de x son: ',num2str(x),' viene a ser un array'])
Los valores de x son: 1 2 3 4 viene a ser un array
Algunos otros comandos utilizados
pause : la ejecucin del programa se detiene en esa lnea hasta dar a una tecla
return : Interrumpe en esa lnea de ejecucin de la funcin, regresando a
donde se le hubiera llamado. Termina un programa si est en la funcin
principal
error(mensaje) : Escribe el mensaje en pantalla y finaliza al ejecucin del m-
fichero, regresando a donde se le llama (consola u otra funcin)
PROGRAMACIN DE MATLAB
sprintf : Devuelde los datos en una variable cadena,muy parecido a su
equivalente en C
>> temp=14; hum=98;
>> sprintf('La temperatura en Lima es %g C con humedad de %g porciento',temp,hum)
ans =
La temperatura en Lima es 14 C con humedad de 98 porciento
Espacio cdigo fuente : EDITOR (M-FILES)
Espacio para ejecutar : VENTANA DE COMANDOS
PROGRAMACIN DE MATLAB

Introduccin a la programacin


Todo lenguaje de programacin requiere de un espacio de trabajo ms
cmodo donde escribir todas las instrucciones.
Cuando escribimos en el intrprete, si nos equivocamos en algo ya no
puedes retroceder, necesitamos tambin crear funciones, etc.
Por lo tanto requerimos un espacio donde escribir el cdigo fuente y un
espacio donde se ejecute.
Tipos M-files:
Archivos Script
Archivos function
No olvidar que para
comentarios en la
programacin se debe
hace con %
Archivos scripts
Se trata de un editor de texto
Basado en un conjunto de sentencias
Se guarda donde se quiere, de preferencia en la carpeta de trabajo
Se guarda con el nombre que quiera Ud. Su extensin es *.m .
Las variables creadas en este archivo usan el workspace.
Tambin se puede llamar desde la ventana de comandos.
PROGRAMACIN DE MATLAB

Introduccin a la programacin
Ejemplo

function [f,promedio]=mifuncion(x,y)
f=y.*(1-y)+x;
promedio=sum(f)/length(x);
Recordar que sum
devuelve la suma
de elementos y
length el tamao
PROGRAMACIN DE MATLAB

Introduccin a la programacin
Definicin de funciones
La primera lnea de un fichero llamado name.m que define una funcin tiene la forma:





Donde name es el nombre de la funcin. Entre corchetes y separados por comas
van los valores de retorno (siempre que haya ms de uno), y entre parntesis
tambin separados por comas van los argumentos

Presenta las caractersticas bsicas de una funcin.
Tienen que tener el mismo nombre del archivo *.m
Scripts vs. Funciones
PROGRAMACIN DE MATLAB
function y=z(n)
global a
y=n*a;
function y=f(x)
global a
a=24;
k=z(4);
y=2*x*k;
Las variables globales
pueden ser mostrarse en el
workspace mediante
>> global variable
PROGRAMACIN DE MATLAB




Variables Locales

Como en todo lenguaje de programacin las variables locales se definen slo
en su espacio de trabajo, no se pude apreciar en el workspace
Variables Globales

En la denicin de una funcin (al igual que en cualquier lenguaje de programacin)
los nombres de las variables son mudos, es decir, se entienden y denen nicamente
dentro del chero, sin relacin con las variables exteriores. La nica excepcin la
forman las variables declaradas como globales en ambos contextos..


global variable1 variable2
PROGRAMACIN DE MATLAB
function y=recta(x)
a=8;%pendiente
y=a*x+b; %valor de la recta
end



>> b=4
b=
4
>> y1=recta1(3)
??? Undefined function or variable 'b'.
function y=recta(x)
global b
a=8;%pendiente
y=a*x+b; %valor de la recta
end


>> global b
>> whos b
Name Size Bytes Class Attributes
b 1x1 8 double global
>> b=12
b=
12
>> y1=recta(3)
y1 =
36
function resultado=func(x,y)
global e
e=sqrt((x+y)/2);
resultado=x^2+y^3+e;
end
:
< Accin n>
Ejercicio:
Calcular la distancia y el punto medio entre dos puntos
en el espacio (hacerlo por vectores)
PROGRAMACIN DE MATLAB

Estructuras de control de Flujo

Todos los algoritmos tienes tres estructuras bsicas:

1. Estructura secuencial
2. Estructura selectiva
3. Estructura iterativa


1. Estructura Secuencial:
Es aquella en la que la accin (instruccin), sigue a otra en secuencia.



< Accin 1>
< Accin 2>
Permiten realizar una u otra operacin segn se cumpla o no determinada condicin.
Las siguientes figuras nos muestran tres posibles formas de bifurcacin.
2. Estructura Selectiva:
PROGRAMACIN DE MATLAB
Sentencias if else anidadas que no cumpla ninguna de
las condiciones que se han
chequeado
Una observacin importante: La condicin del if puede ser una condicin matricial del
tipo A==B, donde A y B son del mismo tamao. Para que la condicin se cumpla es
necesario que sean igual dos a dos todos los elementos de las matrices A y B.
PROGRAMACIN DE MATLAB
2. Estructura Selectiva:

Sentencias if else

La sentencia else puede ser
omitida: si no est presente
no se hace nada en caso de
PROGRAMACIN DE MATLAB
2. Estructura Selectiva:
Sentencias if else
Ejercicios
1. Calcular las soluciones de la ecuacin a*x^2+b*x+c=0, donde a~=0.
2. Calcular el valor absoluto de dos nmeros cualesquiera (sin usar funcin).
3. Generar un nmero aleatorio entre -100 y 100, si es positivo menor que 30 es
pequeo, si es positivo entre 30 y 80 es mediano, si es positivo entre 80 y 100 es
grande.
4. Calcular el rea de un tringulo conociendo sus lados. Mostrar su existencia
PROGRAMACIN DE MATLAB
2. Estructura Selectiva:


Sentencias swith .case
Ejercicio
1. Disear un programa que ingreses el numero de la semana y te devuelva el nombre
de semana.
2. Hacer un multiplexor de funciones
Conocidas tambin como estructuras repetitivas, nos permiten repetir una secuencia
de instrucciones un nmero determinado de veces.
3. Estructura Iterativas:
PROGRAMACIN DE MATLAB
Sentencia while
Donde condicion puede ser una expresin vectorial o matricial. Las sentencias se
siguen ejecutando. 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)
Las estructuras del
bucle while es
muy similar a la de
C/C++/java
3. Estructura Iterativas:
PROGRAMACIN DE MATLAB
Ejercicio
1. Calcular de la sumatoria de 1^2+2^2+3^2+4^2+...n^2
2. Calcule :
3. Calcule la suma de los nmeros enteros empezando en 1,
hasta que la suma exceda de 100
Los valores de i van de 1 a n
variando de uno en uno, si no
se especifica el paso. El
vectorValores es un vector con
los distintnos valores que
tomar la variable i
PROGRAMACIN DE MATLAB

3. Estructura Iterativas:

Sentencia for
La sentencia for repite un conjunto de sentencias un nmero pre-determinado de veces.
La sentencia for de MATLAB es muy diferente y no tiene la generalidad de la sentencia
for de C/C++/Java
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
PROGRAMACIN DE MATLAB
3. Estructura Iterativas:


El caso ms general de la sentencia for, es tomando en cuenta el incremento, el bucle
se ejecuta por primera vez desde i =n, y luego va reduciendo de 0.2 en 0.2 hasta llegar
a ser menor que 1.
En la que i es un vector que va tomando en cada iteracin el valor de una de las
columnas de A.
Cuando se introducen iterativamente en la lnea de comandos, los bucles for se
ejecutan slo despus de introducir la sentencia end que los completa




Ejercicios
1. La sumatoria desde x0 hasta xf de la funcin x^2-3x+21
2. El factorial de un numero
PROGRAMACIN DE MATLAB
3. Estructura Iterativas:


La ltima forma de inters del bucle for es la siguiente (A es una matriz)
% Break
clear;clc;
DAT=[0 0 0 0 0 1 2 3 4 5 6 7 6 5 4 3 2 1 0 0 0 0 0];

for i=1:length(DAT)
if DAT(i)~=0
POS=i;
break;
end
end
PROGRAMACIN DE MATLAB



Sentencia Break
Al igual que en C/C++/Java, la sentencia break hace que se termine la ejecucin del
bucle for y/o while ms interno de los que comprende a dicha sentencia
Dada una matriz aleatoria A
encontrar la posicin de su primer
elemento igual a cero
clear;
clc;
cont=0;
while 1
cont=cont+1;
alt=randi(6);
disp([num2str(cont) '<=' num2str(alt)])
if alt>=cont
continue
else
break
end
end
1<=1
2<=2
3<=6
4<=1
>>
1<=5
2<=4
3<=6
4<=1
>>
PROGRAMACIN DE MATLAB


Sentencia Continue
La sentencia continue hace que se pase inmediatamente a la siguiente iteracin del
bucle for o while ms interno de los que comprende dicha sentencia.
Hacer un programa que muestre un
men de opciones : suma=1, resta=2,
multiplicacin=3 y divisin=4. Para dos
nmeros ingresados por el usuario y
muestre resultados en consola.

Script:
------------------
------------------
a=funcion1;
------------------
------------------
b=funcion2;
------------------
c=funcion3;
---------------
---------------


Funcion2()
---------------
---------------


Funcion3()
---------------
---------------
Ejercicios
1. A partir del factorial de un nmero, calcular el combinatorio de m tomados de n en n
Las funciones son
invocadas desde
el cuerpo de un
programa
PROGRAMACIN DE MATLAB

Introduccin a la programacin
Llamado de funciones en la misma carpeta de trabajo

Funcion1()
% Funcin primaria
function [avg,med] = mediamediana(u)
% Encuentra la media y la mediana
%con las funciones internas.
n = length(u);
avg = media(u,n);
med = mediana(u,n);


function a = media(v,n) %Subfunction
% Calcula la media o promedio.
a = sum(v)/n;


function m = mediana(v,n)% Subfunction
% Calcula la mediana.
w = sort(v);
if rem(n,2) == 1
m = w((n+1)/2);
else
m = (w(n/2)+w(n/2+1))/2;
end
Agregar la desviacin
estndar
function A(arg1)
...
function Aa(a1,a2)
...
function Aa1()
...
end
end
....
function Ab()
...
function Ab1()
...
end
...
function Ab2()
...
end
...
end
....
end
PROGRAMACIN DE MATLAB
Sub-funciones
>> varsin = @sin
>> varsin(pi/2)
ans =
1

>> trifun={@sin,@cos,@tan}
trifun =
@sin @cos @tan
>> trifun{3}(pi/4)
ans =
1.0000




>> I=quad(@sin,0,pi)
I=
2.0000
PROGRAMACIN DE MATLAB




Manipulador de funciones (function handles @)

Matlab tiene una herramienta para asignar funciones (aunque sera ms correcto
llamarlos mtodos) a variables. Si utilizamos los Function handles para asignar una
funcin a una variable podemos utilizar la funcin sin hacerlo directamente al igual
que operamos los argumentos mediante variables.
Un Function handle se denota con la letra @
>> foo2 = @(x,y) sin(x)*cos(y)
foo2 =
@(x,y)sin(x)*cos(y)

>> foo2(6,2)
ans =
0.1163
>> quad(@(x) besselj(2.5,x),0,4.5)
ans =
1.1178
La funcin es annima porque no
tiene ningn nombre fijo, seguir
siendo la misma funcin
independientemente del nombre de
la variable.
PROGRAMACIN DE MATLAB



Funciones annimas
Las funciones annimas constituyen una forma muy flexible de crear funciones sobre
la marcha, ya sea en la lnea de comandos o en una lnea cualquiera de una funcin o
un fichero *.m. La forma general de una funcin annima es la siguiente:

fhandle=@(argumentos) sentencia_ejecutable
eval(expresion) expression = [string1, int2str(var), string2, ...] siendo
x=1:5;
y=eval('(x+2)./x');
strf='sin(x*(pi/2));
z=eval(strf)
y=
3.0000 2.0000 1.6667 1.5000 1.4000
z=
1.0000 0.0000 -1.0000 -0.0000 1.0000


for n = 1:10
eval(['A',num2str(n),' = magic(n)'])
end
Probar los siguientes cdigos


for d=1:5
s = ['load August' int2str(d) '.mat'];
eval(s)
end


for n=1:10
eval(['P',int2str(n),'=n.^2'])
end
PROGRAMACIN DE MATLAB


La funcin eval
Evala una cadena que contiene una expresin MATLAB, sentencia o llamada a funcin
Se puede evaluar una funcin definida
en la misma carpeta de trabajo
colocando el nombre como string


function y=fcn1(x)
y=x*exp(-x^2);
end

>> feval('fcn1',2)
ans =
0.0366
PROGRAMACIN DE MATLAB

La funcin feval

Evala el manejador de funcin usando el argumento x1,x2,x3,,xn


[y1, y2, ...] = feval(fhandle, x1, ..., xn)

[y1, y2, ...] = feval(fname, x1, ..., xn)

>> feval(@(x,y)sin(x)*cos(y),pi/6,pi/3)
ans =
0.2500

>> feval(@(x)x*exp(-x^2),2)
ans =
0.0366

>> feval(@(x,y)x*y^-2+x^3*y+2,2,3)
ans =
26.2222


>> [a,b]=feval(@size,[1 2 3])
PROGRAMACIN DE MATLAB
Mtodos numricos
Son la rama de la matemtica que se encarga de disear algoritmos para a travs de
nmeros y reglas matemticas simples, simular procesos matemticos ms complejos
aplicados a procesos del mundo real .
Mtodo del Biseccin
Consideremos una funcin no lineal f(x) continua en (a; b), tal que sea intervalo
solucin, es decir f(a) * f(b) debe ser menor que cero.
1. Halla el pto medio en el intervalo entre
a y b.
1. Hallar f(c).
2. Analizar: Si f(a)xf(c) > 0 , entonces a=c.
Si f(a)xf(c) < 0 , entonces b=c.
4. Se repite con el nuevo intervalo solucin
hasta llegar a una precisin deseada.
PROGRAMACIN DE MATLAB
Mtodos numricos
Mtodo del punto fijo
Aproxima la solucin de la ecuacin x=g(x) empezando con un valor inicial de
partida p1, y la frmula de recurrencia es:
PROGRAMACIN DE MATLAB
Mtodos numricos
Mtodo del Newton-Raphson
Permite aproximar a una raz de de f(x)=0 a partir de un valor inicial p1,
mediante la frmula de recurrencia .

You might also like