Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Contenido
1. Introduccin a la programacin.
2. Conceptos bsicos de programacin en
MATLAB.
3. Programacin estructurada y modular con
MATLAB.
4. Visualizacin de grficos en MATLAB.
02/02/2015
Contenido
1. Introduccin a la programacin.
1.1 Definiciones bsicas: instruccin, algoritmo y
programa.
1.2 El proceso de desarrollo del software.
1.3 El lenguaje de programacin. Tipos.
1.4 Traductores de lenguaje. Compiladores e intrpretes.
1.5 Esquema general de funcionamiento de un
programa.
1.6 Programas escritos en pseudocdigo.
1.7 Recomendaciones prcticas a la hora de programar.
02/02/2015
02/02/2015
02/02/2015
Intrpretes:
Programas que traducen el cdigo fuente instruccin a instruccin a
lenguaje mquina mientras lo van ejecutando.
No generan un programa escrito en lenguaje mquina.
Cada vez que se ejecuta el programa, este deber ser interpretado
de nuevo.
Son ms lentos que el mismo programa compilado.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 9
Proceso
Salida de
resultados
02/02/2015
02/02/2015
Contenido
2. Conceptos bsicos de programacin en MATLAB.
2.1 Qu es MATLAB?
2.2 El lenguaje de MATLAB.
2.3 Definicin de variable.
2.4 Asignacin de variables.
2.5 Operadores y expresiones. Operadores aritmticos,
relacionales y lgicos.
2.6 Tipos de datos: vectores, matrices y cadenas de
caracteres.
2.7 Funciones elementales de MATLAB.
2.8 Funciones de entrada-salida.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 13
2.1 Qu es Matlab?
Acrnimo de MATrix LABoratory.
Aplicacin informtica interactiva para realizar clculos
cientficos y de ingeniera basada en matrices.
Creado en los aos 70 por Cleve Moler para proporcionar
un acceso a los cdigos LINPACK y EISPACK sin necesidad
de usar Fortran.
Comercializado por MathWorks desde 1984.
Compuesto por:
Un entorno de trabajo para usar Matlab como usuario o como
programador.
Una amplia biblioteca de funciones matemticas.
Un lenguaje propio de programacin.
Herramientas de visualizacin de datos y diseo de interfaces
grficos de usuario.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 14
02/02/2015
2.1 Qu es Matlab?
Interfaces para integrar Matlab con otros lenguajes de
programacin.
Toolboxes o paquetes de ampliacin aplicables a determinados
campos de la ingeniera:
2.1 Qu es Matlab?
02/02/2015
02/02/2015
10
02/02/2015
variable = expresion;
11
02/02/2015
Ejemplo:
a=8;
b=5;
c=a*b-3;
a=c;
a+b=c; Incorrecto. La parte izquierda
slo puede ser una variable.
12
02/02/2015
Accin
Suma
Resta
Multiplicacin
Divisin
Potencia
Primero: ^.
Segundo: *, / (tienen igual prioridad entre ellos).
Tercero: +, (tienen igual prioridad entre ellos).
13
02/02/2015
Accin
Menor
<=
>
Menor o igual
Mayor
Ejemplo
Resultado
5<3
4<=7
5>3
>=
Mayor o igual
4>=7
==
Igual que
3==7
~=
Distinto de
3~=7
Accin
Ejemplo
2<=1 | 5==3
||
Or breve. Si el primer
operando es cierto no se
evala el segundo
2>=1 || 5<3
&
&&
~(3==7)
Negacin
Resultado
14
02/02/2015
Descripcin
double
Real de 64 bits
Mnimo
2.2251e-308
Mximo
1.7977e+308
15
02/02/2015
2.6.1 Matrices
Una matriz es un conjunto rectangular de nmeros,
repartidos por filas y columnas.
Para crear una matriz:
No es necesario definir su tamao de antemano. Matlab lo
determinar en funcin de sus elementos y de su disposicin.
Introducimos los elementos entre corchetes, fila a fila
separadas por punto y coma o por la tecla Intro. Los
elementos de una misma fila los separamos por comas o por
espacios en blanco.
Ejemplo:
>> A=[1
A=
1
4
7
2 3;4 5 6;7 8 9]
2
5
8
3
6
9
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 31
2.6.1 Matrices
Accedemos a un elemento determinado de la matriz
indicando entre parntesis la fila y la columna de dicho
elemento:
>> A(3,2) -> Devolver 8
16
02/02/2015
2.6.2 Vectores
Un vector es una matriz de una sola fila o una sola
columna.
Para crear una vector:
No es necesario definir su tamao de antemano. Matlab lo
determinar en funcin de sus elementos y de su disposicin.
Vector fila: Introducimos los elementos entre corchetes, separados
por comas o por espacios en blanco.
Vector columna: Introducimos los elementos entre corchetes,
separados por punto y coma o por la tecla Intro.
Ejemplo:
>> v=[1 3 5 7 9]
2.6.2 Vectores
Accedemos a un elemento determinado del vector
indicando, entre parntesis, su posicin:
>> v(3) -> Devolver 5
17
02/02/2015
Accin
Ejemplo
Suma
A+B
Resta
AB
Multiplicacin
A*B
Traspuesta
Resolucin de sistemas de
ecuaciones lineales.
A\b
Potencia
A^b
.*
A .* B
./
A ./ B
.^
A.^b
18
02/02/2015
Accin
Ejemplo
Devuelve cierto si la
matriz o el vector A es
igual a la matriz o el
vector B
isequal(A,B)
isequal(A,A)
Devuelve cierto si la
matriz o el vector A est
vaco
isempty(A)
isempty(C)
all(x)
all(x)
any(x)
isequal(A,B)
isempty(A)
Resultado
all(A)
any(x)
any(B)
1
1
19
02/02/2015
2.7 El operador :
Permite crear un vector con un espaciado constante.
Sintaxis: nombre_vector=[i:d:f] nombre_vector=[i:f]
Aclaraciones:
Crea un vector cuyo primer y ltimo elemento son i y f, y los
elementos estn separados a una distancia de d.
>> x=[1:3:10]
x=1 4 7
10
10
2.7 El operador :
Permite acceder a un conjunto de elementos de un vector o matriz.
Funcin
Accin
Ejemplo
x(i:f)
x(3:6)
Resultado
8 4 -6 1
A(i,:)
A(3,:)
-2 3 7 9
A(:,j)
A(:,4)
A(i:f,:)
A(1:3,:)
2 8 4 5
3 0 -1 6
-2 3 7 9
A(:,j:k)
A(:,3:4)
4
-1
7
4
A(i:f,j:k)
A(2:4,1:2)
3 0
-2 3
81
5
6
9
7
5
6
9
7
20
02/02/2015
Accin
Ejemplo
Resultado
eye(n)
eye(2)
1
0
0
1
eye(m,n)
eye(2,3)
1
0
0
1
zeros(n)
zeros(2)
0
0
0
0
zeros(m,n)
zeros(2,3)
0
0
0
0
ones(n)
ones(2)
1
1
1
1
ones(m,n)
ones(2,3)
1
1
1
1
0
0
0
0
1
1
21
02/02/2015
Accin
Ejemplo
Resultado
rand(n)
Matriz
de
nmeros
aleatorios,
comprendidos entre 0 y 1 con una
distribucin uniforme, de tamao nxn
rand(2)
rand(m,n)
Matriz
de
nmeros
aleatorios,
comprendidos entre 0 y 1 con una
distribucin uniforme, de tamao
mxn
rand(2,3)
linspace(i,f,n)
linspace(1,9,5)
0.95 0.61
0.23 0.49
0.9 0.5 0.8
0.8 0.0 0.4
13579
Accin
Ejemplo
[m,n]=size(A)
[m,n]=size(A)
m=3
n=3
triu(A)
triu(A)
8
0
0
2
9
0
3
-6
6
tril(A)
tril(A)
8
4
7
0
9
8
0
0
6
diag(A)
diag(A)
8
9
6
diag(x)
diag(x)
1
0
0
0
3
0
0
0
5
det(A)
det(A)
591
inv(A)
inv(A)
Resultado
22
02/02/2015
Accin
Ejemplo
Resultado
length(x)
length(x)
[m,p]=max(x)
[m,p]=max(x)
m=18
p=4
[m,p]=min(x)
[m,p]=min(x)
m=-5
p=5
sum(x)
sum(x)
21
prod(x)
prod(x)
7560
sort(x)
sort(x)
sort(x,'descend')
mean(x)
mean(x)
-5 -3 4 7 18
18 7 4 -3 -5
4.2
Accin
Ejemplo
sqrt(x)
Raz cuadrada de x
(ex)
Resultado
sqrt(15)
3.8730
exp(4)
54.5982
exp(x)
Exponencial de x
abs(x)
Valor absoluto de x
abs(-18)
18
log(x)
log(100)
4.6052
log2(x)
Logaritmo en base 2 de x
log2(100)
6.6439
log10(x)
Logaritmo en base 10 de x
log10(100)
factorial(x)
Factorial de x
factorial(5)
120
23
02/02/2015
Accin
Ejemplo
Resultado
sin(x)
sin(pi/3)
0.8660
cos(x)
cos(pi/3)
0.5000
tan(x)
tan(pi/3)
1.7321
cot(x)
cot(pi/3)
0.5774
asin(x)
asin(1)
1.5708
acos(x)
acos(1)
atan(x)
atan(1)
0.7854
acot(x)
acot(1)
0.7854
Accin
Ejemplo
Resultado
rem(x,y)
rem(5,2)
round(x)
round(1.73)
round(-1.73)
2
-2
fix(x)
fix(1.73)
fix(-1.73)
1
-1
ceil(x)
ceil(1.73)
ceil(-1.73)
2
-1
floor(x)
floor(1.73)
floor(-1.73)
1
-2
sign(x)
sign(-12)
-1
24
02/02/2015
25
02/02/2015
Accin
Ejemplo
Resultado
disp('cadena')
Muestra la cadena en la
ventana de comandos
disp('Adis clase')
Adis clase
fprintf('cadena')
fprintf('Adis clase')
Adis clase
error('cadena')
Muestra la cadena en la
ventana
de
comandos
como un mensaje de error
y el programa finaliza
error('Adis clase')
input('cadena')
Muestra la cadena en la
ventana de comandos y
espera
hasta
que
introduzcamos
el
dato
correspondiente ms intro
x=input('Dame un n:')
Dame un n: 5
x=5
opcion=menu('cabecera',
'opcion1','opcion2',,
'opcionN')
op = menu('Elige un
color','Rojo','Azul','Verde')
Contenido
3. Programacin estructurada y modular con
MATLAB.
3.1
3.2
3.3
3.4
3.5
3.6
3.7
Creacin de funciones.
Ejecucin de funciones.
Variables y funciones.
Visualizacin de resultados.
Los comentarios.
Bifurcacin condicional: Sentencias if-else, switch.
Sentencias de repeticin: Sentencias for y while.
26
02/02/2015
Salida 1
Entrada n
Funcin
Salida m
27
02/02/2015
function [arg_salida]=nombre(arg_entrada)
% Funcionalidad de la funcin
instruccin 1;
instruccin 2;
instruccin n;
28
02/02/2015
29
02/02/2015
Comentarios.
Llamadas a funciones de Matlab o del usuario.
Estructuras de control.
Clculos.
Asignaciones, asignando los valores correspondientes a los
argumentos de salida.
30
02/02/2015
31
02/02/2015
32
02/02/2015
33
02/02/2015
34
02/02/2015
35
02/02/2015
36
02/02/2015
mostrar su nombre).
Sintaxis: disp('Texto') o disp(x), siendo x la variable cuyo
contenido mostramos por pantalla.
Slo permite visualizar el valor de una variable.
No permite visualizar conjuntamente texto y el valor de una
variable.
El formato de visualizacin de los valores de las variables
depende del fijado en las opciones de Matlab.
>> A=[1 3 5;2 4 6];
>> disp(A)
1 3 5
2 4 6
>> disp('Los resultados obtenido son: ')
Los resultados obtenido son:
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 73
Argumentos:
Lista de elementos (variables, expresiones o llamadas a
funciones), separados por comas, cuyo valor se mostrar por
pantalla.
Por cada elemento deber aparecer un % en la cadena formato.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 74
37
02/02/2015
38
02/02/2015
Dato
Ejemplo
fprintf('%d',x)
Resultado
Entero
3452.175624
3.452176e+003
3452.18
Cadena de caracteres
hola clase
fprintf('%s',c)
Resultado
fprintf('x=%7d',35)
x=
35
fprintf('x=%f',35)
x=35.000000
fprintf('x=%f',3.456)
x=3.456000
fprintf('x=%9.2f',3.456)
x=
fprintf('x=%2.4f',3.456175)
x=3.4562
fprintf('x=%e',345.652)
x=3.456520e+002
fprintf('x=%.3e',345.652)
x=3.457e+002
fprintf('x=%12.3e',345.652)
x=
3.46
3.457e+002
39
02/02/2015
Ejemplos:
>> fprintf('Hola clase.\t Adis clase.')
Hola clase.
Adis clase.
>> fprintf('Hola clase.\n Adis clase.')
Hola clase.
Adis clase.
3.4.2 Ejercicio
Implementar una funcin que convierta de grados
Farenheit a grados Celsius:
C=(F-32)*(5/9), siendo:
F: temperatura en grados Farenheit.
C: la temperatura en grados Celsius.
40
02/02/2015
3.4.2 Ejercicio
Escribir una funcin que devuelva como resultados de
salida el rea y la longitud de una circunferencia. El
radio se proporcionar como dato de entrada.
L = 2r
A = r2
3.4.2 Ejercicio
Una empresa de venta de productos prefabricados de
hormign necesita una sencilla funcin que calcule y muestre
el precio de venta en euros de un producto. Para ello, se
debe aplicar la siguiente frmula:
precio_venta = precio_compra *
100 + margen
100
41
02/02/2015
3.4.2 Ejercicio
Implementar una funcin que intercambie el valor de dos
variables escalares, las cuales se pasan como datos de
entrada y se devuelven como resultado de salida.
42
02/02/2015
43
02/02/2015
No
cond
bloque1
bloque2
Resto de Instrucciones
44
02/02/2015
else
bloqueN;
end
45
02/02/2015
46
02/02/2015
switch expresion
ayuda a entender de manera ms
case valor1
clara el programa.
bloque1;
La expresion debe ser un escalar o
case valor2
una cadena de caracteres.
bloque2;
Los valores deben ser escalares o
case valor3
cadena de caracteres.
bloque3;
Si hay varios valores repetidos, se
atender el primero.
otherwise
Las instrucciones de un case se
bloqueN;
ejecutan hasta alcanzar otro case o
el otherwise.
end
Si expresion no coincide con ningn valor se ejecutan las
instrucciones de la opcin otherwise (si aparece, ya que no es
obligatoria).
switch expresion
en un mismo case empleando { }.
case valor1
bloque1;
case {valor2, valor3, valor4}
bloque2;
En ese caso, se ejecutarn las
case valor5
instrucciones asociadas siempre y
bloque5;
cuando haya al menos una
coincidencia entre la expresion y
47
02/02/2015
48
02/02/2015
Tipos:
for.
while.
indice=inicio
49
02/02/2015
50
02/02/2015
51
02/02/2015
Masa (kg)
10
20
50
Fuerza (N)
12.5
23.5
30
61
118
294
Fuerza
Coef_Rozamiento
-----------------------------------------------2.0000
12.5000
0.6371
4.0000
23.5000
0.5989
5.0000
30.0000
0.6116
10.0000
61.0000
0.6218
20.0000
118.0000
0.6014
50.0000
294.0000
0.5994
52
02/02/2015
Las instrucciones se
cond
No
S
Instrucciones
53
02/02/2015
54
02/02/2015
3.7.3 Ejercicio 1
Desarrollar una funcin que calcule el mximo de un
vector.
La funcin devolver como argumentos de salida el
mximo y la posicin del mismo.
3.7.3 Ejercicio 2
Realizar una funcin que, dado un vector v y un valor
x, devuelva:
El nmero de elementos de v iguales a x.
El nmero de elementos de v menores que x.
El nmero de elementos de v mayores que x.
55
02/02/2015
3.7.3 Ejercicio 3
Crear una funcin que proporcione la media de los
elementos de un vector:
n
x=
i=1
3.7.3 Ejercicio 4
Desarrollar una funcin que proporcione el factorial de
un nmero.
1
n! = n * (n 1) * * 2 * 1 =
i
i=n
56
02/02/2015
3.7.3 Ejercicio 5
Implementar una funcin que, a partir de un vector x,
proporcione el resultado de la siguiente expresin:
n
i=1
(x
x)2
i=1
3.7.3 Ejercicio 6
Desarrollar, mediante bucles for, una funcin que
proporcione la suma de una matriz rectangular que se
proporciona como dato de entrada.
m
ij
i=1 j=1
57
02/02/2015
3.7.3 Ejercicio 7
Desarrollar una funcin que, a partir de una matriz A
de tamao mxn, devuelva un vector con la suma de los
elementos de cada columna de la matriz.
Nota: La longitud del vector debe coincidir con el
nmero de columnas de la matriz.
3.7.3 Ejercicio 8
Desarrollar una programa que muestre por pantalla este men al
usuario:
58
02/02/2015
3.7.3 Ejercicio 9
Modificar el programa anterior de modo que se incluya la opcin
de Finalizar:
Contenido
4. Visualizacin de grficos en MATLAB.
4.1 Introduccin.
4.2 Funciones relacionadas.
59
02/02/2015
4.1 Introduccin
La visualizacin grfica es imprescindible para presentar
la informacin y facilitar la comprensin de la misma.
Descripcin
plot
Grfico de lneas.
area
Grfico
curva.
fplot
bar
de
lneas
pero
rellena
la
barh
stairs
Grfico de escaleras.
stem
pie
hist
Histograma.
60
02/02/2015
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
40
60
90
100
120
160
180
190
170
120
90
61
02/02/2015
Descripcin
Rojo
Verde
Cian
Magenta
Amarillo
Negro
Blanco
62
02/02/2015
Descripcin
--
Discontinua.
Punteada.
-.
Raya y puntos.
Descripcin
Signo ms.
Crculo.
Equis.
Asterisco.
Punto.
Cuadrado.
Diamante.
Estrella de 5 puntas.
Estrella de 6 puntas.
63
02/02/2015
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
40
60
90
100
120
160
180
190
170
120
90
64
02/02/2015
Ejemplo:
>> x=0:0.01:2*pi;
>> y=cos(x);
>> plot(x,y)
65
02/02/2015
Descripcin
title('texto')
xlabel('texto')
ylabel('texto')
legend('texto1','texto2',)
text(x,y,'texto')
gtext('texto')
grid on
grid off
hold on
hold off
66
02/02/2015
67