Kitabı oku: «Modelamiento y simulación de sistemas con Simulink», sayfa 4
1.6.2 Opciones de salida
La función disp muestra el valor de las variables omitiendo la figuración del nombre de las variables; se utiliza para representar no sólo letras sino también números, como se demuestra en el siguiente ejemplo:
1 clc % <enter > Limpieza de la ventana de comandos
2 clear all % <enter > Limpieza del espacio de trabajo 3 x =1:5; % <enter > Creación del vector x
4 disp (x) % <enter > Uso de la función disp
5 disp ( ' Los valores de la matriz x son: ' ) % <enter > disp
6 disp ( ' Los valores de la matriz x son: ' ); disp (x) % <enter > disp
7 disp ([ ' Los valores en el arreglo x son: ' , num2str (x)]); % <enter > disp
8 disp ( ' El símbolo del apóstrofe ( ' ' ) es usado al inicio y final en cadenas en Matlab ' ) % <enter > disp
9 A1 = [15 150 15]; % <enter > Creación del vector A1
10 S1 = ‘ Hola Mundo ‘ ; % <enter > Creación de cadena
11 disp (A1) % <enter > disp
12 disp (S1) % <enter > disp
13 X = ' <a href =” https :// www.mathworks.com”> MathWorks Web Site </a> ' % <enter >
14 disp (X) % <enter > disp
15 X2 = rand (6 ,3); % <enter > Matriz aleatoria
16 disp ( ' Test1 Test2 Test3 ' ) % <enter > disp
17 disp (X2) % <enter > disp
A diferencia de la función disp, la función fprintf es un poco más elaborada ya que permite trabajar tanto con números como con textos al mismo tiempo; esto se aprecia en el siguiente ejemplo demostrativo:
1 clc % <enter > Limpieza de la ventana de comandos
2 clear all % <enter > Limpieza del espacio de trabajo
3 vacas = 5 % <enter > Asignación de valor a variable
4 fprintf ( ' Hay %8.2f vacas en el pastizal \n ' , vacas ) % <enter > fprintf
5 voltage = 3.5 % <enter > Asignación de valor a variable
6 fprintf ( ' El voltage es %8.4f voltios \n ' , voltage ) % <enter > fprintf
7 A1 = [9.9 , 9900]; % <enter > Creación del vector A1
8 A2 = [8.8 , 7.7 ; 8800 , 7700]; % <enter > Creación del vector A2
9 X1 = ' X es %4.2f metros o %8.3f mm\n ' ; % <enter > Creación del vector X1
10 fprintf (X1 ,A1 ,A2) % <enter > fprintf
11 a1 = [1.05 3.04 5.06 7.02 7.09 8.45]; % <enter > Creación del vector a1
12 fprintf ( ' %d\n ' ,round (a1)); % <enter > fprintf
1.7 GRÁFICOS
Los gráficos ayudan de manera significativa a la interpretación de resultados en la resolución de problemas; permitiendo visualizar tendencias, así como identificar posibles errores de cálculo. Matlab cuenta con una gran variedad de funciones que ayudan al usuario a establecer un gráfico desde el más simple hasta el más sofisticado.
1.7.1 Función plot
En el siguiente ejemplo se muestra la manera como al utilizar la función plot se define y genera la presentación del gráfico de la figura 1.6:
1 clc % <enter > Limpieza de la ventana de comandos
2 clear all % <enter > Limpieza del espacio de trabajo
3 close all % <enter > Limpieza de figuras abiertas
4 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
5 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
6 x1 = 0:0.1:10 % <enter > Creación del vector x1
7 y1 = sin(x1)+cos(x1) % <enter > Creación del vector y1
8 plot (x1 ,y1) % <enter > Trazo mediante la función plot
Figura 1.6. Creación de figura mediante la función plot
1.7.2 Título, etiquetas y cuadrícula
A continuación, se le añade al gráfico anterior un título mediante la función title, rótulos en los ejes mediante el uso de las funciones xlabel y ylabel, y una cuadrícula mediante la función grid; la nueva presentación del gráfico se muestra en la figura 1.7:
1 title ( ' Tiempo vs Desplazamiento ' ) % <enter > Título del gráfico
2 xlabel ( ' Tiempo , segundos ' ) % <enter > Etiqueta en el eje x
3 ylabel ( ' Desplazamiento , metros ' ) % <enter > Etiqueta en el eje y
4 grid on % <enter > Inserción de rejilla en el gráfico
5 ax = gca % <enter >
6 ax.GridAlpha = 0.40 % <enter > Oscurecimiento de cuadrículas
7 grid minor % <enter > Muestra de cuadrículas principales y menores
Figura 1.7. Adición de rótulos en los ejes, título y cuadrículas
1.7.3 Función hold on
Se utiliza la función hold on con la finalidad de crear figuras que contengan más de un trazo; ejemplo de ello se presenta a continuación y el resultado se visualiza en la figura 1.8:
1 clc % <enter > Limpieza de la ventana de comandos
2 clear all % <enter > Limpieza del espacio de trabajo
3 close all % <enter > Limpieza de figuras abiertas
4 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
5 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
6 x1 = 0: pi /100:2*pi; % <enter > Creación del vector x1
7 y1 = cos (4*x1); % <enter > Creación del vector y1
8 y2 = sin(x1); % <enter > Creación del vector y2
9 hold on % <enter > Uso de hold on para permanencia de trazos
10 plot (x1 ,y1) % <enter > Trazo mediante la función plot
11 plot (x1 ,y2) % <enter > Trazo mediante la función plot
12 xlim ([0 2*pi ]) % <enter > Límite en el eje X
Figura 1.8. Gráfico con más de un trazo
1.7.4 Trazos con base en vectores y matrices
También es posible obtener gráficos que contengan varios trazos a través de la declaración de vectores y matrices; esto se presenta en el siguiente ejemplo y el resultado se muestra en la figura 1.9:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 X1 = 0: pi /100:2*pi; % <enter > Creación del vector X1
3 Y1 = cos(X1)*2; % <enter > Creación del vector Y1
4 Y2 = cos(X1)*3; % <enter > Creación del vector Y2
5 Y3 = cos(X1)*4; % <enter > Creación del vector Y3
6 Y4 = cos(X1)*5; % <enter > Creación del vector Y4
7 Z1 = [ Y1; Y2; Y3; Y4 ]; % <enter > Creación de la matriz Z1
8 plot (X1 , Y1 , X1 , Y2 , X1 , Y3 , X1 , Y4) % <enter > Uso de la función plot
9 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
10 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
11 grid on % <enter > Uso de la función grid para inserción de rejillas
12 set(gca , ' GridAlpha ' ,0.40); % <enter > Oscurecimiento de grillas
13 xlim ([0 2* pi ]) % <enter > Límite en el eje X
14 plot (X1 , Z1) % <enter > Trazo mediante la función plot
15 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
16 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
17 grid on % <enter > Uso de la función grid para inserción de rejillas
18 set(gca , ' GridAlpha ' ,0.40); % <enter > Oscurecimiento de grillas
19 xlim ([0 2* pi ]) % <enter > Límite en el eje X
Figura 1.9. Gráfico con varios trazos
1.7.5 Función peaks
La función peaks genera un gráfico resultante de trasladar y escalar distribuciones gaussianas de acuerdo a una matriz de orden n x n, cuyo argumento n (número entero positivo) acompaña a dicha función. La generación de este gráfico (figura 1.10) sirve para demostrar al usuario los alcances gráficos en cuanto a superficies, colores, mallas, contornos, etcétera, con que cuenta Matlab. Ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
3 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
4 plot ( peaks (100) ) % <enter > Uso de la función peaks
5 grid on % <enter > Uso de la función grid para inserción de rejillas
6 set(gca , ' GridAlpha ' ,0.40); % <enter > Oscurecimiento de grillas
Figura 1.10. Gráfico originado por la función peaks
1.7.6 Elección de colores
Debido a que es necesario siempre definir uno o varios colores dentro de los gráficos; se presenta a continuación la tabla 1.2, la cual indica la letra especifica que representa a cada color:
Tabla 1.2
Especificadores de los colores en los gráficos
El siguiente ejemplo presenta el estilo de líneas, colores y marcas, cuyo resultado se muestra en la figura 1.11:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 x1 = 0:0.2:10 % <enter > Creación del vector x1
3 y1 = sin(x1)+cos(x1) % <enter > Creación del vector y1
4 figure (1) % <enter > Creación de figura
5 plot (x1 ,y1 , ' :ok ' ) % <enter > Trazo mediante la función plot
6 grid on % <enter > Inserción de rejilla en el gráfico
7 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
8 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
9 figure (2) % <enter > Creación de figura
10 plot (x1 ,y1 , ' -xr ' ) % <enter > Trazo mediante la función plot
11 grid on % <enter > Inserción de rejilla en el gráfico
12 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
13 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
14 figure (3) % <enter > Creación de figura
15 plot (x1 ,y1 , ' :+b ' ) % <enter > Trazo mediante la función plot
16 grid on % <enter > Inserción de rejilla en el gráfico
17 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
18 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
19 figure (4) % <enter > Creación de figura
20 plot (x1 ,y1 , ' --sg ' ) % <enter > Trazo mediante la función plot
21 grid on % <enter > Inserción de rejilla en el gráfico
22 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
23 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
Figura 1.11. Trazos originados por distintos tipos de líneas, marcas y colores
1.7.7 Funciones axis, legend y text
La función axis se utiliza para escalar el eje vertical y horizontal, la función legend para la creación de leyendas y la función text para añadir textos sobre los posibles trazos; a continuación se presenta un ejemplo y su respectivo gráfico resultante en la figura 1.12:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
3 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el grafico
4 x = [0 5 5 0 0] % <enter > Creación del vector x
5 y = [0 0 5 5 0] % <enter > Creación del vector y
6 plot (x,y) % <enter > Trazo mediante la función plot
7 axis equal % <enter > Uso de la función axis
8 axis ([ –1 6 –1 6]) % <enter > Uso de la función axis
9 legend ( ' Líneas 01 ' ) % <enter > Inserción de leyenda
10 text (2.5 ,2.5 , ' Gráfico ' ) % <enter > Inserción de texto
11 gtext ( ' Gráfico ' ) % <enter > Inserción de texto interactivo
12 grid on % <enter > Inserción de rejilla en el grafico
13 ax = gca; % <enter >
14 ax.GridAlpha =0.40; % <enter > Oscurecimiento de cuadrículas
1.7.8 Función subplot
En diferentes ocasiones es óptimo presentar un conjunto de gráficas en una misma ventana; para este tipo de ocasiones se utiliza la función subplot. Dicha función tiene por sintaxis subplot(m,n,p); donde los índices m y n darán el orden de la matriz de la ventana (en otras palabras m es la cantidad de particiones horizontales y n es la cantidad de particiones verticales de la ventana) y p son las subdivisiones de la ventana enumeradas. El resultado del siguiente ejemplo explícito se presenta en la figura 1.13:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
3 x1 = 0: pi /10:2* pi; % <enter > Creación del vector x1
4 subplot (2 ,1 ,1) % <enter > Uso de la función subplot
5 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el grafico
6 plot (x1 ,sin(x1)) % <enter > Trazo mediante la función plot
7 grid on % <enter > Inserción de rejilla en el grafico
8 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el grafico
9 subplot (2 ,1 ,2) % <enter > Uso de la función subplot
10 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el grafico
11 plot (x1 ,sin (3* x1)) % <enter > Trazo mediante la función plot
12 grid on % <enter > Inserción de rejilla en el gráfico
13 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
Figura 1.13. Gráficos mediante la función subplot
1.7.9 Función semilog y loglog
También hay la opción de asignar escalas semilogarítmicas y logarítmicas, según sea necesario en el gráfico, con el uso de las funciones semilog y loglog; como se muestra en el siguiente ejemplo, cuya resultante es la figura 1.14:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
3 x1 = 0:0.1:50; % <enter > Creación del vector x1
4 y1 = 5* x1 .^2; % <enter > Creación del vector x2
5 subplot (2 ,2 ,1) % <enter > Uso de la función subplot
6 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
7 plot (x1 ,y1) % <enter > Trazo mediante la función plot
8 title ( ' Polinomio - lineal / lineal ' ) % <enter > Título
9 xlabel ( ' x1 ' ) % <enter > Etiqueta en el eje x
10 ylabel ( ' y1 ' ) % <enter > Etiqueta en el eje y
11 grid on % <enter > Uso de la función grid para inserción de rejillas
12 ax = gca; % <enter >
13 ax.GridAlpha = 0.40; % <enter > Oscurecimiento de grillas
14 subplot (2 ,2 ,2) % <enter > Uso de la función subplot
15 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
16 semilogx (x1 ,y1) % <enter > Trazo mediante la función semilogx
17 title ( ' Polinomio - logarítmico / lineal ' ) % <enter > Título
18 xlabel ( ' x1 ' ) % <enter > Etiqueta en el eje x
19 ylabel ( ' y1 ' ) % <enter > Etiqueta en el eje y
20 grid on % <enter > Uso de la función grid para inserción de rejillas
21 ax = gca; % <enter >
22 ax.GridAlpha = 0.40; % <enter > Oscurecimiento de grillas
23 subplot (2 ,2 ,3) % <enter > Uso de la función subplot
24 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
25 semilogy (x1 ,y1) % <enter > Trazo mediante la función semilogy
26 title ( ' Polinomio - lineal / logarítmico ' ) % <enter > Título
27 xlabel ( ' x1 ' ) % <enter > Etiqueta en el eje x
28 ylabel ( ' y1 ' ) % <enter > Etiqueta en el eje y
29 grid on % <enter > Uso de la función grid para inserción de rejillas
30 ax = gca; % <enter >
31 ax.GridAlpha = 0.40; % <enter > Oscurecimiento de grillas
32 subplot (2 ,2 ,4) % <enter > Uso de la función subplot
33 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
34 loglog (x1 ,y1) % <enter > Trazo mediante la función loglog
35 title ( ' Polinomio - logarítmico / logarítmico ' ) % <enter > Título
36 xlabel ( ' x1 ' ) % <enter > Etiqueta en el eje x
37 ylabel ( ' y1 ' ) % <enter > Etiqueta en el eje y
38 grid on % <enter > Uso de la función grid para inserción de rejillas
39 ax = gca; % <enter >
40 ax.GridAlpha = 0.40; % <enter > Oscurecimiento de grillas
Figura 1.14. Gráficos obtenidos mediante el uso de escalas lineales y logarítmicas
1.7.10 Función yyaxis
En el caso de que se pretenda mostrar dos trazos diferentes pero que compartan el mismo eje horizontal, pero escalas diferentes en el eje vertical, se debe utilizar la función yyaxis; cuyo argumento referido al lado derecho de la imagen es right y al lado izquierdo left. A continuación se presenta un ejemplo asociado a la función yyaxis y su respectiva gráfica resultante es la figura 1.15:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
3 x1 = linspace (0 ,25); % <enter > Creación del vector x1
4 y1 = sin(x1 /2); % <enter > Creación del vector y1
5 yyaxis left % <enter > Uso de la función yyaxis left
6 plot (x1 ,y1) % <enter > Trazo mediante la función plot
7 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
8 r1 = x1 .^2/2; % <enter > Creación del vector r1
9 ylim ([ -1 1]) % <enter > Límite en el eje Y
10 yyaxis right % <enter > Uso de la función yyaxis right
11 plot (x1 ,r1) % <enter > Trazo mediante la función plot
12 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
13 ylim ([0 350]) % <enter > Límite en el eje Y
Figura 1.15. Gráfico con dos ejes verticales
1.7.11 Funciones fill y fill3
Las funciones fill y fill3 proporcionan un color de relleno a imágenes, con área determinada por vértices, bidimensionales y tridimensionales, respectivamente. Un ejemplo demostrativo de estas funciones es presentado y su gráfica resultante es la figura 1.16:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 figure (1) % <enter > Creación de figura
3 x1 = [1 2 3 3 2 1 0 0] % <enter > Creación del vector x1
4 y1 = [0 0 1 2 3 3 2 1] % <enter > Creación del vector y1
5 fill (x1 ,y1 , ' r ‘ ) % <enter > Uso de la función fill bidimensional
6 axis square % <enter > Uso de la función axis square
7 axis ([ -1 4 -1 4]) % <enter > Uso de la función axis (límites)
8 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
9 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
10 grid on % <enter > Inserción de rejilla en el gráfico
11 ax = gca; % <enter >
12 ax.GridAlpha =0.40; % <enter > Oscurecimiento de grillas
13 figure (2) % <enter > Creación de figura
14 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
15 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
16 xx = [1 1 0 0] % <enter > Creación del vector xx
17 yy = [0 1 1 0] % <enter > Creación del vector yy
18 zz = [0 0 1 1] % <enter > Creación del vector zz
19 fill3 (xx ,yy ,zz , ' r ' ) % <enter > Uso de la función fill tridimensional
20 axis square % <enter > Uso de la función axis square
21 axis ([ -0.5 1.5 -0.5 1.5 0 1]) % <enter > axis (límites)
22 view (125 ,20) % <enter > Función de visualización 3D
23 xlabel ( ' x ' ) % <enter > Etiqueta en el eje x
24 ylabel ( ' y ' ) % <enter > Etiqueta en el eje y
25 zlabel ( ' z ' ) % <enter > Etiqueta en el eje z
26 grid % <enter > Inserción de rejillas en el gráfico
27 ax = gca; % <enter >
28 ax.GridAlpha =0.40; % <enter > Oscurecimiento de grillas
Figura 1.16. Relleno de áreas con colores