2. Contenidos del curso
• Entorno Matlab.
• Tipos de datos básicos.
• Funciones y operaciones con arrays.
• Notación “:” y array slice.
• Operaciones lógicas.
• Operaciones matemáticas.
• Gráficos.
• Miscelánea.
• Ciclo de vida del software.
• Tipos de datos.
• Estructuras de control.
• Descomposición funcional y diseño descendente.
• Funciones.
• Recursividad.
• Debug.
• Proyecto Final.
Matlab CLI
Programación en Matlab
3. plots(1)
• Un plot es una representación gráfica de los
datos que nos permite echar un vistazo a los
mismos de forma rápida.
• Hay varios tipos de plots: 2d, 3d, raster.
• Para representar una función debemos
evaluar dicha función en varios puntos y trazar
una línea que los una.
• Para crear una nueva ventana gráfica
llamaremos a la función figure que nos
devuelve el handle de la ventana.
4. plots(2)
• Para saber el handle actual llamaremos a gcf.
• El número de puntos en los que evaluar la
función es importante:
• Podemos mostrar diferentes funciones/datos
en la misma figura.
>> N = 10;
>> x=0:1/N:1;
>> y = sin(3*pi*x);
>> plot(x,y)
>> N=100;
…
5. plots(3)
• Podemos poner títulos, anotaciones,
cuadrícula y cambiar el estilo de línea.
• Podemos sobreescribir un plot encima de otro
rellamando a la función plot, si queremos que
las gráficas permanezcan juntas en la ventana
gráfica habrá que llamar a hold on/hold off.
>> plot(x,y,’r-.’)
>> title(‘grafico de y = sin(3pi x)')
>> xlabel(‘eje x')
>> ylabel(‘eje y')
>> grid
6. plots(4)
• Podemos guardar a disco el plot o bien desde
menú o bien con el comando print. Se pueden
especificar varios formatos en el momento de
escribir a disco.
• También podemos poner varios plots en una
misma figura con el comando subplot.
>> print -djpeg100 fig1
>> print -deps fig1
8. plots(6)
• Podemos hacer un zoom sobre la imagen
seleccionando el trozo de imagen que
queremos visualizar, también podemos
activarlo desde la interfaz gráfica.
• Se puede especificar el estilo de línea cuando
invocamos a plot, el trazo el color y el
marcador.
>> zoom
>> plot(t,y,':or');
>> plot(t,y,':^g');
9. plots(7)
• Otra función que hace algo parecido es stem:
• Se pueden visualizar tanto los marcadores
como las líneas:
>> t=0:.1:10;
>> y = exp(-t);
>> stem(t,y,'g:');
>> x = 0:pi/15:4*pi;
>> y = exp(2*cos(x));
>> plot(x,y,'-r',x,y,'ok')
10. plots(8)
• Un aspecto muy importante de la visualización
son los ejes, la cota de referencia para
interpretar los datos, la podemos consultar y
cambiar.
>> x = 0:pi/15:4*pi;
>> y = exp(2*cos(x));
>> plot(x,y,'-r',x,y,'ok');
>> axis([0 14 0 16]);
>> axis([4 10 2 inf]);
11. plots(9)
• Otro aspecto a modificar son las etiquetas de
las gráficas, podemos cambiar el valor por
defecto que escribe el comando.
>> t=-pi:2*pi/100:pi;
>> y=sin(t);
>> plot(t,y);
>> xlabel('-pi leq Theta leq pi');
>> ylabel('sin(Theta)');
>> title('Plot of sin(Theta)');
>> set(gca,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'});
>> set(gca,'XTick',-pi:pi/2:pi);
>> set(gca,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'});
12. plots(10)
• También podemos fijar la relación de aspecto,
que es el ratio entre la altura y la anchura del
gráfico, por defecto tiene la misma que la
relación de aspecto de la ventana.
>> axis normal
>> axis square
>> axis equal
13. plots(11)
• Hasta ahora hemos visualizado datos
agrupados por tiempo, pero también
podemos agrupar por otro concepto que no
sea sensible de ser ordenado como el tiempo,
ej: número de pymes por comunidad
autónoma. Para ello usaremos los gráficos de
barras.
>> x=[2 6 4 3 2 7 6];
>> bar(x)
>> x=[14 3 5;1 2 5];
>> bar(x)
14. plots(12)
• Otro comando para imprimir gráficos de
barras es bar3.
• Otro elemento gráfico son las barras apiladas.
>> x=[2 6 4 3 2 7 6];
>> bar3(x)
>> x=[14 3 5;1 2 5];
>> bar3(x,’group’);
>> x=[14 3 5;1 2 5];
>> bar(x,’stack’)
15. plots(13)
• Otro gráfica a tener en cuenta son las gráficas
de área:
>> Y = [5 1 2
8 3 7
9 6 8
5 5 5
4 2 3];
harea = area(Y)
16. plots(11)
• Gráficos en 3D, un ejemplo sencillo:
• La función surf tiene muchos parámetros para
poder cambiar la visualización de la función.
>> Z = peaks(20);
>> h = surf(Z);