Está en la página 1de 28

1

TEMA 4: LECTURA Y VISUALIZACIÓN DE


DATOS. PRIMEROS PROGRAMAS: SCRIPTS
Autores: Luis Javier Herrera Maldonado

Contenido:
1. Directorio de trabajo
2. Creación de scripts
3. Comandos de entrada y salida de datos
4. Gráficos: Visualización de datos en 2D y 3D
5. Guardando de datos de fichero
6. Leyendo datos en fichero
1. Directorio de trabajo en MATLAB 2

Contenido del directorio Ventana de comandos Espacio de trabajo


de trabajo actual

VIENE INDICADO AQUÍ!!!

Historial de comandos
1. Directorio de trabajo en MATLAB 3

• Es el directorio donde MATLAB va a buscar los scripts


ejecutables y archivos de datos que el usuario
especifique. Es además donde se van a guardar datos y
resultados bajo orden del usuario.
• Además del directorio actual, MATLAB encuentra ficheros
en el llamado “path”, éste es configurable en el menú
“File→Set Path...”
• Además de mediante la barra de heramientas del
directorio actual, hay una serie de comandos que nos
permiten consultar y modificar el directorio actual:
– pwd o cd: para consultar el directorio actual
– dir o ls: para listar el contenido del directorio actual
– cd para cambiar de directorio
• cd .. para ir al directorio padre
• cd XXX para ir al directorio hijo XXX
2. Creación de scripts 4

• Muchas veces, tenemos interés en generar una secuencia


de instrucciones que conjuntamente hagan algo. Es
interesante en este caso poder guardar dichas
instrucciones y poderlas ejecutar varias veces →
• Scripts: son ficheros de texto (programas) con
extensión .m
• Son el tipo más simple de programa en Matlab, aunque
pueden ser tan largos (y en definitiva complejos) como
deseemos. En los temas siguientes veremos las nociones
de programación estructurada y creación de funciones
para avanzar en la generación de programas más
potentes
• Todas las variables que se crean en los scripts
permanecen en el espacio de trabajo de Matlab, así que
se pueden usar para cálculos posteriores. Además
podemos generar gráficas, etc.
2. Creación de scripts 5

• Para crear un script:


– Comando “edit”
– Menú Archivo → nuevo → script
– Botón “nuevo script”
2. Creación de scripts. COMENTARIOS 6

FUNDAMENTAL:
• Los scripts pueden contener comentarios (pueden no,
DEBEN, TIENEN QUE,... si no, dejan de ser ÚTILES!! →
Y LA IDEA DE LOS SCRIPTS ES QUE SEAN ÚTILES!!)
• Los comentarios son cualquier texto precedido del
símbolo % en cualquier línea del código. Pueden ir en
línea separada, o bien al final de una línea de código

% Este script sirve para limpiar la pantalla, limpiar el espacio de trabajo


% y cerrar todas las ventanas

clear all % limpia el espacio de trabajo (elimina todas las variables)


close all % cierra todas las figuras
clc % limpia la pantalla
2. Creación de scripts. COMENTARIOS 7

En general:
• Comentario inicial que explique lo que hace el script
globalmente, de qué trata, y con qué datos trabaja
• Comentario en cada sección de código (grupo de
instrucciones que realizan una tarea concreta)
• Comentario en cada punto donde se considere necesario
(suelen ser muchos!)

→ Cuando volvamos a abrir el script, al día siguiente, a la


semana, o a los meses, sabremos:
– De qué trataba
– Con qué datos trabajaba
– Cómo lo organizamos
– Y sobre todo: PODREMOS MEJORARLO Y APRENDER A
HACER LAS COSAS MEJOR
2. Creación de scripts 8

• Ejemplo: Problema del cálculo de la temperatura final de


un objeto introducido en una cámara frigorífica:
% Este script calcula la temperatura final de un objeto introducido
% en una cámara frigorífica transcurrido un tiempo especificado

%Valores iniciales
Ts = 4; % Temperatura de la cámara frigorífica
T0 = 50; % Temperatura inicial del objeto
k = 0.45; % Constante de la ecuación
t = 3; % Tiempo transcurrido en horas

% Cálculo de la temperatura final


Tf = Ts + (T0-Ts)*exp(-k*t);

% Visualizamos los resultados


disp(['La temperatura final del objeto es: '])
disp(Tf);
2. Creación de scripts 9

• Para ejecutar: temperaturaObjetoCamaraFrigorifica.m


% Este script calcula la temperatura final de un objeto introducido en una
% cámara frigorífica transcurrido un tiempo especificado

%Valores iniciales
Ts = 4; % Temperatura de la cámara frigorífica
T0 = 50; % Temperatura inicial del objeto
k = 0.45; % Constante de la ecuación
t = 3; % Tiempo transcurrido en horas

% Cálculo de la temperatura final


Tf = Ts + (T0-Ts)*exp(-k*t);

% Visualizamos los resultados


disp(['La temperatura final del objeto es: '])
disp(Tf);

a) desde la línea de comandos


>> temperaturaObjetoCamaraFrigorifica
b) desde el editor de scripts, botón ejecutar
>> temperaturaObjetoCamaraFrigorifica
La temperatura final del objeto es:
15.9251
3. Comandos de entrada y salida de datos 10

• En muchísimos casos, vamos a querer que nuestro script


se ejecute varias veces, variando uno o varios parámetros
del mismo para obtener una variedad de resultados.
• El comando input permite leer del usuario un valor
% Este script calcula la temperatura final de un objeto introducido en una
% cámara frigorífica transcurrido un tiempo especificado

%Valores iniciales
Ts = 4; % Temperatura de la cámara frigorífica
T0 = 50; % Temperatura inicial del objeto
k = 0.45; % Constante de la ecuación
t = input('Introduzca el número de horas que el objeto permanece en la
cámara: '); % Tiempo transcurrido en horas

% Cálculo de la temperatura final


Tf = Ts + (T0-Ts)*exp(-k*t);

% Visualizamos los resultados


disp(['La temperatura final del objeto es: '])
disp(Tf);
3. Comandos de entrada y salida de datos 11

• El comando input permite leer del usuario un valor


% Este script calcula la temperatura final de un objeto introducido en una
% cámara frigorífica transcurrido un tiempo especificado
%Valores iniciales
Ts = 4; % Temperatura de la cámara frigorífica
T0 = 50; % Temperatura inicial del objeto
k = 0.45; % Constante de la ecuación
t = input('Introduzca el número de horas que el objeto permanece en la cámara: '); %
Tiempo transcurrido en horas
% Cálculo de la temperatura final
Tf = Ts + (T0-Ts)*exp(-k*t);
% Visualizamos los resultados
disp(['La temperatura final del objeto es: '])
disp(Tf);

• Al ejecutar

>> temperaturaObjetoCamaraFrigorifica
Introduzca el número de horas que el objeto permanece en la cámara: 3
La temperatura final del objeto es:
15.9251
3. Comandos de entrada y salida de datos 12

• Para mostrar el valor de las variables o resultados


calculados, ya sabemos que si no ponemos un (;) al final
de la instrucción, el resultado de la instrucción (expresión
que incorpora) se muestra por pantalla.
• Pero si queremos organizar mejor el mostrado de
resultados podemos utilizar el comando disp()

>> X = [4 5]
ans =
4 5
>> disp(4)
4
>> disp('4 +5')
4 +5
>> disp(X)
4 5
>> disp('X')
X
3. Comandos de entrada y salida de datos 13

% Generamos aleatoriamente cantidades para los tres compuestos


X = rand([5 3]);
disp('Cantidades de compuestos seleccionadas')
disp(' A B C')
disp(X)
>> generaCantidades
Cantidades de compuestos seleccionadas
A B C
0.7662 0.9820 0.3330
0.1566 0.4970 0.2328
0.8827 0.7655 0.9230
0.4705 0.5075 0.5316
0.4180 0.6005 0.6232

• Podemos mostrar mensajes más complejos


concatenando mensajes con [] (componiendo vectores
más largos de caracteres) y usando la función num2str
% muestra la edad de alicia
nombre = 'Alicia'; edad = 12;
disp([nombre, ' tendrá ', num2str(edad), ' este año.'];)

>> muestraEdad
Alicia tendrá 12 este año.
----------------------------------------------------------
... disp(['La temperatura final del objeto es: ', num2str(Tf)]);
>> temperaturaObjetoCamaraFrigorifica
Introduzca el número de horas que el objeto permanece en la cámara: 3
La temperatura final del objeto es: 15.9251
3. Comandos de entrada y salida de datos 14

ESTRUCTURA TÍPICA DE LA MAYORÍA DE LOS SCRIPTS


% COMENTARIOS GENERALES DEL PROGRAMA: 1º
% Este script calcula la temperatura final de un objeto introducido en una
% cámara frigorífica transcurrido un tiempo especificado

% INICIALIZACIÓN Y LECTURA DE DATOS


% Valores iniciales

Ts = 4; % Temperatura de la cámara frigorífica
T0 = 50; % Temperatura inicial del objeto
k = 0.45; % Constante de la ecuación
t = t = input('Introduzca el número de horas que el objeto permanece en la cámara: ');

% CÁLCULOS
% Cálculo de la temperatura final

Tf = Ts + (T0-Ts)*exp(-k*t);

% SALIDA DE RESULTADOS
% Visualizamos los resultados

disp(['La temperatura final del objeto es: '])
disp(Tf);
4. Visualización 2D y 3D 15

• Posibilidades de gráficos en 2D en Matlab


4. Visualización 2D y 3D 16

• Posibilidades de gráficos en 3D en Matlab


4. Visualización 2D y 3D 17

• El comando más común en Matlab para generar gráficos


(en 2D) es plot.
• En general se especifican dos argumentos (y un tercero
para el tipo de línea), los datos en X en primer lugar, y el
Y como segundo argumento:
t = 0:pi/100:2*pi;
y = sin(t);
plot(t,y)
grid on % Establece líneas de rejilla para este gráfico
4. Visualización 2D y 3D 18

% Como tercer argumento se puede % Además se pueden dibujar varias


indicar, como cadena de caracteres líneas en el mismo gráfico y con el
(''), color ('r', 'g', 'k', 'b', mismo comando:
etc.) y tipo de línea o marcador
('--', '*', '-*', etc.), o una x = 0:pi/15:4*pi;
combinación de ambas: y = -exp(2*cos(x));
x = 0:pi/15:4*pi; plot(x,y,'-r',x,y,'ok')
y = -exp(2*cos(x));
plot(x,y,'r+')
4. Visualización 2D y 3D 19

• Se pueden agregar más características a las figuras como


título, nombres en los ejes, etc. (todo esto lo veremos con
más detenimiento en prácticas)

x = -pi:.1:pi;
y = sin(x);
p = plot(x,y)
set(gca,'XTick',-pi:pi/2:pi)
set(gca,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'})
xlabel('-\pi \leq \Theta \leq \pi')
ylabel('sin(\Theta)')
title('Plot of sin(\Theta)')
% \Theta appears as a Greek symbol (see String)
% Annotate the point (-pi/4, sin(-pi/4))
text(-pi/4,sin(-pi/4),'\leftarrow sin(-\pi\div4)',...
'HorizontalAlignment','left')
% Change the line color to red and
% set the line width to 2 points
set(p,'Color','red','LineWidth',2)
4. Visualización 2D y 3D 20

• plot3 es una de las funciones de Matlab que nos permite


realizar gráficos en 3D

t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
grid on
axis square
4. Visualización 2D y 3D 21

• La siguiente figura muestra los componentes de la


ventana de figura que se genera tras un comando figure o
un comando tipo plot

% Además se pueden dibujar varias


series de valores con un solo
comando plot, si los valores de y
están en forma de matriz, con cada
fila una serie de datos a dibujar

x = 0:.2:20;
y = sin(x)./sqrt(x+1);
y(2,:) = sin(x/2)./sqrt(x+1);
y(3,:) = sin(x/3)./sqrt(x+1);
plot(x,y)
4. Visualización 2D y 3D 22

% Este script muestra la evolución de la temperatura final de un


% objeto introducido en una cámara frigorífica transcurrido un rango
% de tiempos

%Valores iniciales
Ts = 4; % Temperatura de la cámara frigorífica
T0 = 50; % Temperatura inicial del objeto
k = 0.45; % Constante de la ecuación
t = 0:0.5:24; % Tiempo transcurrido en horas

% Cálculo de la temperatura final


Tf = Ts + (T0-Ts)*exp(-k*t);

% Gráfica con la evolución de la temperatura en el tiempo


plot(t,Tf);
grid on;
xlabel('tiempo en horas transcurrido');
ylabel('temperatura final del objeto');
title('Evolución de la temperatura del objeto introducido en el
tiempo');
4. Visualización 2D y 3D 23
5. Guardando datos en un fichero 24

• El comando save, guarda variables del espacio de trabajo


en un fichero
– save fichero variables
– save(fichero, variables)
• Se pueden guardar los datos en formato MATLAB o en
formato ASCII
– save fichero -ASCII

Limpiando el workspace
• El comando clear limpia el espacio de trabajo de las
variables en el mismo
– clear variables
– clear all
– clear -except variables
5. Guardando datos en un fichero 25

• Mi programa con el comando save para guardar todas las


variables
% Este script calcula la temperatura final de un objeto introducido en una
% cámara frigorífica transcurrido un tiempo especificado

%Valores iniciales
Ts = 4; % Temperatura de la cámara frigorífica
T0 = 50; % Temperatura inicial del objeto
k = 0.45; % Constante de la ecuación
t = 3; % Tiempo transcurrido en horas

% Cálculo de la temperatura final


Tf = Ts + (T0-Ts)*exp(-k*t);

% Visualizamos los resultados


disp(['La temperatura final del objeto es: '])
disp(Tf);

% Guardamos todos las variables de este problema en un fichero


save RESULTADOStemperaturaObjeto Ts T0 k t Tf
5. Guardando datos en un fichero 26

• O bien, cuidando de no guardar todo lo que hubiese antes


en el espacio de trabajo:
clear all

% Este script calcula la temperatura final de un objeto introducido en una


% cámara frigorífica transcurrido un tiempo especificado

%Valores iniciales
Ts = 4; % Temperatura de la cámara frigorífica
T0 = 50; % Temperatura inicial del objeto
k = 0.45; % Constante de la ecuación
t = 3; % Tiempo transcurrido en horas

% Cálculo de la temperatura final


Tf = Ts + (T0-Ts)*exp(-k*t);

% Visualizamos los resultados


disp(['La temperatura final del objeto es: '])
disp(Tf);

% Guardamos todos las variables de este problema en un fichero


save RESULTADOStemperaturaObjeto
6. Lectura de datos de un fichero 27

• La lectura de datos de un fichero se realiza mediante la


orden load
– load fichero
– load(fichero)
• Se leen las variables incluidas en el fichero en el espacio
de trabajo. Si había variables con el mismo nombre, éstas
se machacan con los nuevos valores
• Se pueden leer variables concretas
– load(fichero,variables)
• Se pueden leer archivos de datos de matlab, pero
también archivos de texto separados por tabuladores
(ojo!!, la separación de los decimales es el '.', la coma se
toma como una separación entre datos)
– load -ASCII fichero
6. Lectura de datos de un fichero 28

• Leyendo los datos desde fichero, calculando y


visualizando por pantalla

load RESULTADOStemperaturaObjeto

% Cálculo de la temperatura final


Tf = Ts + (T0-Ts)*exp(-k*t);

% Visualizamos los resultados


disp(['La temperatura final del objeto es: '])
disp(Tf);

También podría gustarte