Kitabı oku: «Modelamiento y simulación de sistemas con Simulink», sayfa 6
1.9.3 Suma y resta de polinomios
Para sumar o restar polinomios estos deben ser polinomios completos y tener el mismo orden; de lo contrario, se deben completar con valores de cero a los coeficientes de los monomios faltantes; por ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 f1 = [3 25 0 – 10 – 3 20 – 20] % <enter > Creación del polinomio f1
3 f2 = [3 0 – 5 – 8] % <enter > Creación del polinomio f2
4 f = f1 + [0 0 0 f2] % <enter > Suma de polinomios
5 g = f1 – [0 0 0 f2] % <enter > Resta de polinomios
6 h = f + g % <enter > Suma de polinomios
1.9.4 Raíces de un polinomio
Para calcular las raíces de un polinomio se debe emplear la función roots; por ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 f = [1 1 20.60 30.40 12.02 76.85 36.44] % <enter > Representación
3 r1 = roots (f) % <enter > Cálculo de raíces del polinomio f
4 g = [1 1 10 15 20] % <enter > Representación
5 r2 = roots (g) % <enter > Cálculo de raíces del polinomio g
1.9.5 Función poly
La función poly realiza el procedimiento inverso de la función roots, debido a que establece un polinomio a partir de sus raíces; ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 r = [3.5 4.5 2.0 3.2 4.8 6.2] % <enter > Raíces del polinomio
3 f = poly (r) % <enter > Uso de la función poly
1.9.6 Multiplicación de polinomios
Si se desea multiplicar polinomios se debe utilizar la función conv; por ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 f1 =[3 15 0 -10 -3 15 -40] % <enter > Polinomio f1
3 f2 =[3 0 -2 -6] % <enter > Polinomio f2
4 f= conv (f1 ,f2) % <enter > Multiplicación de polinomios
1.9.7 División de polinomios
Inversa de la función conv es la función deconv, la cual origina la división entre polinomios; ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 f1 = [2 9 7 -6] % <enter > Polinomio f1
3 f2 = [1 3] % <enter > Polinomio f2
4 [a,b] = deconv (u,v) % <enter > División de polinomios
1.10 CÁLCULO SIMBÓLICO
En Matlab es posible trabajar con cálculo simbólico; ya que permite al usuario ejecutar expresiones simbólicas sobre la base de objetos simbólicos.
1.10.1 Función sym
La función sym se puede utilizar para almacenar un objeto simbólico en una variable; ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 a = sym( ' a ' ) % <enter > Objeto simbólico almacenado en la variable a
3 b = sym( ' b ' ) % <enter > Objeto simbólico almacenado en la variable b
También se pueden utilizar números como objetos con la función sym; por ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 c = sym( ' 5 ' ) % <enter > Objeto simbólico almacenado en la variable c
3 d = sym( ' 7 ' ) % <enter > Objeto simbólico almacenado en la variable d
1.10.2 Función syms
Es bastante similar a la función sym, con la diferencia de que la función syms crea varios objetos simbólicos al mismo tiempo; ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 sym y z d % <enter > Creación de objetos simbólicos y z d
3 y % <enter > Visualización del objeto simbólico y
4 z % <enter > Visualización del objeto simbólico z
5 d % <enter > Visualización del objeto simbólico d
El ejemplo que se presenta a continuación ilustra la creación de expresiones simbólicas:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 syms a b c x y % <enter > Creación de objetos simbólicos a b c x y
3 f = a*x^2+b*x+c % <enter > Expresión simbólica f
4 g = 2*a/3 +4*a /7 -6.5* x+x /3+4*5/3 -1.5 % <enter > Expresión simbólica g
1.10.3 Función collect
Para obtener los coeficientes de cada uno de los términos de una expresión simbólica se utiliza la función collect; ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 syms x y % <enter > Creación de objetos simbólicos x y
3 S = (x^2+x-exp(x))*(x+3) % <enter > Expresión simbólica
4 F = collect (S) % <enter > Uso de la función collect
5 T = (2* x^2+y^2) *(x+y ^2+3) %<enter > Expresión simbólica
6 G = collect (T) % <enter > Uso de la función collect
7 G = collect (T,y) % <enter > Uso de la función collect
1.10.4 Función expand
La función expand expande una expresión simbólica factorizada, obteniendo los términos del desarrollo de dicha expresión simbólica factorizada; ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 syms a x y % <enter > Creación de objetos simbólicos a x y
3 S = (x+5) *(x-a)*(x+4) % <enter > Expresión simbólica
4 T = expand (S) % <enter > Uso de la función expand
5 expand (sin(x-y)) % <enter > Uso de la función expand
1.10.5 Función factor
Inversa de la función expand es la función factor, la cual convierte una expresión simbólica establecida en varios términos a una expresión simbólica factorizada; ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 syms x y % <enter > Creación del objeto simbólico x e y
3 S1 = x ^3+4* x^2 -11*x -30 % <enter > Expresión simbólica
4 factor (S1) % <enter > Uso de la función factor
5 S2 = x ^3+3* x ^2+3* x+1 % <enter > Expresión simbólica
6 factor (S2) % <enter > Uso de la función factor
7 S3 = x^4 -1 % <enter > Expresión simbólica
8 factor (S3) % <enter > Uso de la función factor
1.10.6 Función simplify
Para mostrar la simplificación de una expresión simbólica se debe utilizar la función simplify; ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 syms x y % <enter > Creación de objetos simbólicos x y
3 S=x*(x*(x -8) +10) -5 % <enter > Expresión simbólica
4 S1= simplify (S) % <enter > Uso de la función simplify
5 simplify ((x+y) /(1/ x+1/y)) % <enter > Uso de la función simplify
1.10.7 Función pretty
La función pretty presenta una expresión simbólica en un formato de texto que se asemeja a la tradicional escritura de las expresiones matemáticas; ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 syms a b c x y % <enter > Creación de objetos simbólicos a b c x y
3 S = sqrt (a*x^2+b*x*c) % <enter > Expresión simbólica
4 pretty (S) % <enter > Uso de la función pretty
1.11 INTERPOLACIÓN
La interpolación es un procedimiento que establece valores de puntos desconocidos dentro de un rango de puntos conocidos.
1.11.1 Función interp1 para interpolación
En el siguiente ejemplo, referido a la interpolación de la función seno, la función interp1 puede realizar una interpolación lineal definiendo un vector, para el caso de este ejemplo el vector xq, que contenga las coordenadas de los puntos secundarios por considerar en el eje X; como también puede realizar una interpolación más elaborada, aumentando el argumento del método spline.
1 Interpolación de la función seno mediante interpolación lineal e interpolación spline.
2 clc , clear all , close all % Funciones de limpieza
3 x = 0: pi /4:2* pi; % <enter > Define el vector x
4 v = sin(x); % <enter > Define el vector v
5 xq = 0: pi /16:2* pi; % <enter > Define el vector xq
6 figure (1) % <enter > Crea una figura
7 set(gcf , ' Color ' , ' w ' ); % <enter > Fondo color blanco
8 vq1 = interp1 (x,v,xq); % <enter > Realiza la interpolación
9 plot (x,v, ' o ' ,xq ,vq1 , ' :. ' ); % <enter > Gráficos
10 xlim ([0 2* pi ]); % <enter > Establece límites en el eje x
11 title ( ' Interpolación Lineal ' ); %<enter > Establece título
12 grid on % <enter > Cuadrículas
13 ax = gca; % <enter >
14 ax. GridAlpha =0.40; % <enter > Oscurecimiento de cuadrículas
15 xlabel ( ' Eje X ' , ' FontSize ' ,20, ' FontName ' , ' Century ' ) % <enter > Rótulo X
16 ylabel ( ' Eje Y ' , ' FontSize ' ,20, ' FontName ' , ' Century ' ) % <enter > Rótulo Y
17 figure (2) % <enter > Crea una figura
18 set(gcf , ' Color ' , ' w ' ); % <enter > Fondo color blanco
19 vq2 = interp1 (x,v,xq , ' spline ' ); % <enter > Realiza la interpolación
20 plot (x,v, ' o ' ,xq ,vq2 , ' :. ' ); % <enter > Gráficos
21 xlim ([0 2* pi ]); % <enter > Establece límites en el eje x
22 title ( ' Interpolación Spline ' ); % <enter > Títulos
23 grid on % <enter > Cuadrículas
24 ax = gca; % <enter >
25 ax. GridAlpha =0.40; % <enter > Oscurecimiento de cuadrículas
26 xlabel ( ' Eje X ' , ' FontSize ' ,20, ' FontName ' , ' Century ' ) % <enter > Rótulo X
27 ylabel ( ' Eje Y ' , ' FontSize ' ,20, ' FontName ' , ' Century ' ) % <enter > Rótulo Y

Figura 1.28. Interpolación de la función seno mediante la función interp1
De igual manera, a continuación se muestra la opción de usar la función interp1 para obtener una interpolación sin la necesidad de especificar el vector de las coordenadas X de los puntos principales.
1 % Interpolación de la función seno sin especificar puntos en el eje
2 % horizontal.
3 clc , clear all , close all % Funciones de limpieza
4 v = [0 1.41 2 1.41 0 -1.41 -2 -1.41 0]; % <enter > Define el vector v
5 xq = 1.5:8.5; % <enter > Define el vector xq
6 vq = interp1 (v,xq); % <enter > Define el vector vq
7 figure (1) % <enter > Crea una figura
8 title ( ' Interpolación ' ); % <enter > Título
9 plot ((1:9) ,v, ' o ' ,xq ,vq , ' * ' ); % <enter > Gráficos
10 set(gcf , ' Color ' , ' w ' ); % <enter > Fondo color blanco
11 hleg = legend ( ' v ' , ' vq ' , ' Location ' , ' NorthEast ' ); % <enter > Leyenda
12 set(hleg , ' FontAngle ' , ' normal ' , ' FontName ' , ' Century ' , ' FontSize ' ,16)
13 grid on % <enter > Cuadrículas
14 ax = gca; % <enter >
15 ax. GridAlpha = 0.40; % <enter > Oscurecimiento de cuadrículas
16 xlabel ( ' Eje X ' , ' FontSize ' ,20, ' FontName ' , ' Century ' ) % <enter > Rótulo X
17 ylabel ( ' Eje Y ' , ' FontSize ' ,20, ' FontName ' , ' Century ' ) % <enter > Rótulo Y

Figura 1.29. Interpolación sin especificar valores en el eje de las abscisas
1.12 EXTRAPOLACIÓN
La extrapolación es un procedimiento que establece valores de puntos desconocidos dentro o fuera de un rango de puntos conocidos.
1.12.1 Función interp1 para extrapolación
La función interp1 puede realizar una extrapolación por defecto utilizando el método pchip; como también una extrapolación por el método lineal acompañado del argumento extrap, la cual no es por defecto. Ejemplo:
1 % Extrapolación
2 clc , clear all , close all % Funciones de limpieza
3 x = [1 2 3 4 5]; % <enter > Define el vector x
4 v = [12 16 31 10 6]; % <enter > Define el vector v
5 xq = [0 0.5 1.5 5.5 6]; % <enter > Define el vector xq
6 vq1= interp1 (x,v,xq , ' pchip ' ); % <enter > Realiza la interpolación
7 vq3 = interp1 (x,v,xq , ' linear ' , ' extrap ' ); % Realiza la interpolación
8 figure (1) % <enter > Crea una figura
9 plot (x,v, ' o ' ,xq ,vq1 , ' * ' ); % <enter > Gráfico
10 title ( ' Extrapolación ' ); % <enter > Título
11 set(gcf , ' Color ' , ' w ' ); % <enter > Fondo color blanco
12 hleg = legend ( ' v ' , ' vq1 ' , ' Location ' , ' NorthEast ' ); % <enter > Leyenda
13 set(hleg , ' FontAngle ' , ' normal ' , ' FontName ' , ' Century ' , ' FontSize ' ,16)
14 grid on % <enter > Cuadrículas
15 set(gca , ' GridAlpha ' ,0.40) % <enter > Oscurecimiento de cuadrículas
16 xlabel ( ' Eje X ' , ' FontSize ' ,20, ' FontName ' , ' Century ' ) % <enter > Rótula X
17 ylabel ( ' Eje Y ' , ' FontSize ' ,20, ' FontName ' , ' Century ' ) % <enter > Rótula Y
18 figure (2) % <enter > Crea una figura
19 plot (x,v, ' o ' ,xq ,vq3 , ' * ' ); % <enter > Gráfico
20 title ( ' Extrapolación ' ); % <enter > Título
21 set(gcf , ' Color ' , ' w ' ); % <enter > Fondo color blanco
22 grid on % <enter > Cuadrículas
23 set(gca , ' GridAlpha ' ,0.40) % <enter > Oscurecimiento de cuadrículas
24 hleg = legend ( ' v ' , ' vq3 ' , ' Location ' , ' NorthEast ' ); % <enter > Leyenda
25 set(hleg , ' FontAngle ' , ' normal ' , ' FontName ' , ' Century ' , ' FontSize ' ,16)
26 xlabel ( ' Eje X ' , ' FontSize ' ,20, ' FontName ' , ' Century ' ) % Rótula X
27 ylabel ( ' Eje Y ' , ' FontSize ' ,20, ' FontName ' , ' Century ' ) % Rótula Y

Figura 1.30. Gráficas de extrapolación mediante distintos procedimientos
1.13 CREACIÓN DE FUNCIONES
El usuario tiene la posibilidad de crear funciones personalizadas; dichas funciones se identificarán rápidamente en la ventana Current Folder por la expresión fx en sus iconos.
1.13.1 Archivo de funciones
El archivo de función se crea en el editor de Matlab, a no ser que sea una función anónima, la cual tiene una estructura particular que empezará siempre con la palabra function. Por característica propia, sus variables internas son locales para la función. Ejemplo:
1 function [ Variables de salida ] = Nombre de la función ( Variables de ingreso )
2 % Comentarios
3 Expresiones
4 Variables de salida = ...
Con la finalidad de que no haya problemas de operatividad al utilizar la función personalizada creada, se recomienda que el nombre del archivo de la función y el nombre de la función sean iguales.
A continuación se presenta un ejemplo en el cual se crea una función personalizada sobre la base de las ecuaciones 1.34a y 1.34b:

Ahora, para llamar a la función personalizada creada Calcular XY y poder visualizar la formulación de dicha función se debe hacer lo siguiente:
1 [u,v]= CalcularXY (0: pi /4:pi , 1.4 , 2, 0.75);
2 help CalcularXY
1.13.2 Funciones anónimas
Es una alternativa para elaborar funciones simples sin la necesidad de crear un archivo. Una función anónima se puede establecer en la línea de comandos, dentro de una función o dentro de un script. La sintaxis de una función anónima corresponde a lo siguiente:
1 functionhandle = @( argumentos ) ( expresión )
donde functionhandle es el nombre de la función anónima, argumentos son las variables que emplea y expresión es el procedimiento que se va a ejecutar sobre la base de los argumentos. Para una mejor comprensión, se muestra la formula-ción de la función anónima de la siguiente expresión:

en la que se propone los valores de las variables son β = π/4 y = x = 4.8.
1 bet=pi /4;
2 cx=@(x) (abs(cos(bet*x)));
3 disp (cx (4.8) )
Es posible considerar varios argumentos en una función anónima, como se muestra en el siguiente ejemplo:
1 cx=@(x, bet) (abs(cos(bet*x)));
2 disp (cx (4.8 , pi /4))
Capítulo2 | Entorno de desarrollo de interfaz gráfica de usuario Guide |
2.1 INTRODUCCIÓN
Guide es un ambiente de desarrollo de aplicaciones, el cual cuenta con una gran variedad de herramientas que simplifican, a través de una manipulación directa de estas, el proceso de generar o programar interfaces de usuario.
Una forma de trabajar en Guide es arrastrando hacia el área de diseño diversos componentes, como ejes, paneles, botones interactivos, textos estáticos, controles deslizantes, menús contextuales, etcétera; para posteriormente, generar la creación de una aplicación de acuerdo al detallado que el usuario especifique. Desde el área de diseño se puede configurar el ambiente de trabajo, establecer diversas configuraciones y ejecutar el avance desarrollado, para verificar el correcto funcionamiento de lo planificado.
También cabe señalar que es posible programar interfaces gráficas de usuario desde un archivo-m o directamente desde la ventana de comandos. En este capítulo se presentan algunos de los procedimientos básicos para la creación de interfaces gráficas de usuario (GUIs) en Matlab.
2.2 Diseño de interfaces gráficas de usuario mediante el empleo de Guide
2.2.1 Plantillas
Guide proporciona plantillas simples que el usuario puede utilizar para crear GUI. A continuación se presenta la secuencia para manipular las plantillas que, por defecto, ofrece Matlab:
1. Tipear en la ventana de comandos: guide <enter >; luego se mostrará la ventana de la figura 2.1, la cual presenta tres tipos de plantillas ubicadas en la pestaña Create New GUI. Como primer ejemplo, elegir la plantilla GUI with Uicontrols y dar clic en el botón OK de la ventana GUIDE Quick Start.
Figura 2.1. Ventana de Inicio rápido de Guide
2. De esta manera aparecerá la ventana de la figura 2.2. Para ejecutar la aplicación que ya se encuentra establecida (Measures-Units), se debe hacer clic en el icono que lleva por mensaje Run Figure (Ctrl+T), mostrado también en la figura 2.2. Luego aparecerá la opción para guardar el GUI, que creará dos archivos y los abrirá al instante: el archivo untitled.m (contiene el código fuente del GUI) y el archivo untitled.fig.
Figura 2.2. Ventana de diseño del GUI
3. Finalmente, se tiene la ventana del aplicativo untitled.fig; mostrada en la figura 2.3.
Figura 2.3. Ventana de aplicación de la Plantilla 1
Mediante procedimientos similares al mostrado anteriormente se pueden usar las plantillas GUI with Axes and Menu y Modal Question Dialog mostradas en la figura 2.4 y figura 2.5, respectivamente.
Figura 2.4. Ventana de aplicación de la Plantilla 2
Figura 2.5. Ventana de aplicación de la Plantilla 3
2.2.2 Ventana Inspector de Guide
Esta ventana, mostrada en la figura 2.6, es propia del área de diseño y de cada uno de los componentes (ejes, paneles, botones interactivos, textos estáticos, controles deslizantes, etcétera) de Guide. La ventana Inspector contiene una amplia variedad de propiedades, lo cual permite modificar hasta la apariencia de las aplicaciones creadas. Una forma rápida de acceder a esta ventana es haciendo doble clic sobre un componente o sobre el área de diseño.
Figura 2.6. Ventana Inspector
También es posible abrir de manera constante la ventana Inspector haciendo clic en la opción View dentro del archivo de extensión .fig y seleccionando la opción Property Inspector. En el caso de que se esté programando el GUI desde un archivo-m o desde la ventana de comandos entonces las propiedades de los componentes de la aplicación se modificarán desde allí mismo.