Kitabı oku: «Modelamiento y simulación de sistemas con Simulink», sayfa 2
1.3 EL AMBIENTE DEL MATLAB
La figura 1.2 es la presentación por defecto que el usuario encontrará en su primera interacción con Matlab, en la que emergen cuatro ventanas y algunas pestañas con opciones básicas y avanzadas. En esta ocasión solo se nombrarán las ventanas, ya que es básico tener conocimiento de estas. La ventana lateral derecha es la ventana Workspace, la cual permite al usuario visualizar las variables y sus respectivas propiedades, definidas en pasos anteriores. La ventana central es la ventana Command Window, en la cual se ejecutan los cálculos directamente, pudiéndose visualizar los resultados o ser almacenados interiormente. La ventana superior izquierda es la ventana Current Folder, que muestra la ruta de la carpeta actual en la que el usuario está trabajando. La ventana inferior izquierda es la ventana Details; la cual muestra un conjunto de detalles de cualquier archivo en particular, previa selección del archivo en la ventana Current Folder.
Figura 1.2. Ventanas por defecto de Matlab
En la figura 1.3 se muestra el editor de Matlab, utilizado frecuentemente para la creación y ejecución de código fuente.
Figura 1.3. Editor de Matlab
1.4 FUNDAMENTOS DEL MATLAB
El Matlab presenta aspectos fundamentales y el uso de algunas funciones sencillas, que son de gran utilidad para los usuarios en el transcurso de su manejo y aprendizaje.
1.4.1 Formato de impresión de resultados
Con el fin de que los números que aparecen en la ventana de comandos sean más legibles, es conveniente usar los argumentos short y long que acompañan a la función format; ejemplo demostrativo:
1 format short % <enter > Respuesta del sistema en formato corto
2 p = 7.1 % <enter > Asigna el valor de 7.1 a la variable p
3 format long % <enter > Respuesta del sistema en formato largo
4 p = 7.1 % <enter > Asigna el valor de 7.1 a la variable p
1.4.2 Supresión de resultados
Para suprimir la respuesta de cualquier cálculo se debe colocar un punto y coma (;) en el último carácter de la expresión que va a ser evaluada; por ejemplo:
1 clc % <enter > Limpieza de la ventana de comandos
2 clear all % <enter > Limpieza del espacio de trabajo
3 p = 7.5 % <enter > Asigna el valor de 7.5 a la variable p
4 x = 4.82; % <enter > Asigna el valor de 4.82 a la variable x
5 p = 7.1 , x = 4.92 % <enter > Ingreso de variables en una sola línea
6 p = 7.1; x = 4.92; % <enter > Ingreso de variables en una sola línea
1.4.3 Precedencia de cálculo
Un aspecto importante para tener en cuenta es el orden de precedencia a la hora de la ejecución de los cálculos (tabla 1.1); dicho orden es el mismo que se utiliza en la mayoría de las calculadoras.
Tabla 1.1 Orden de precedencia en Matlab
Precedencia | Operación matemática |
Primero | Paréntesis |
Segundo | Exponenciación |
Tercero | Multiplicación, división |
Cuarto | Suma y resta |
A continuación se presenta una secuencia de instrucciones para evaluar expresiones matemáticas, previa asignación de valores a las variables en uso:
1 clc % <enter > Limpieza de la ventana de comandos
2 clear all % <enter > Limpieza del espacio de trabajo
3 a = 4.9; % <enter > Asigna el valor de 4.9 a la variable a
4 b = 3.2; % <enter > Asigna el valor de 3.2 a la variable b
5 c = 3.5; % <enter > Asigna el valor de 3.5 a la variable c
6 d = 3.9; % <enter > Asigna el valor de 3.9 a la variable d
7 e = ((1+2*c) /(1+5*a))^(b+d) % <enter > Realiza el cálculo de e
1.4.4 Excepciones en la asignación de variables
Cabe mencionar que existen variables preestablecidas para un uso en particular, que Matlab reserva internamente y no es conveniente designarlas para representar otro valor en una secuencia de instrucciones. Entre algunas de las excepciones están: Ejemplo:
1 clc % <enter > Limpieza de la ventana de comandos
2 clear all % <enter > Limpieza del espacio de trabajo
3 a = 2; % <enter > Asignación de valores a variables
4 b = 3; % <enter > Asignación de valores a variables
5 z = a+1i*b % <enter > Asignación de valores a variables (i= sqrt ( -1))
6 z = a+2j*b % <enter > Asignación de valores a variables (j= sqrt ( -1))
7 s = pi /3; % <enter > Cálculo involucrando (pi =3.141593 ...)
1.4.5 Evaluación de expresiones sin asignación de variables
Se pueden realizar cálculos numéricos y simbólicos mediante funciones matemáticas, a las que no es necesario asignarles variables; por ejemplo:
1 clc % <enter > Limpieza de la ventana de comandos
2 clear all % <enter > Limpieza del espacio de trabajo
3 log (2.5) % <enter > Realiza la operación ln (2.5) (logaritmo neperiano)
4 cos (pi /3) % <enter > Realiza la operación en radianes por defecto
1.4.6 Cálculos involucrando números reales y complejos
Matlab permite trabajar cómodamente con números reales y complejos, sin ninguna operación especial por parte del usuario; ejemplo:
1 clc % <enter > Limpieza de la ventana de comandos
2 clear all % <enter > Limpieza del espacio de trabajo
3 z = 4+ sqrt (-4) % <enter > sqrt representa a la función raíz cuadrada
4 y = sqrt (-4) + abs (-2) % <enter > abs representa a la función valor absoluto
1.4.7 Funciones matemáticas
Se encuentra un gran conjunto de funciones de cálculo elemental, así como también funciones matemáticas avanzadas implementadas dentro del software; las cuales son de uso común en diversos campos de la ciencia. Algunos ejemplos:
1 clc % <enter > Limpieza de la ventana de comandos
2 clear all % <enter > Limpieza del espacio de trabajo
3 x1 = exp (2.5) % <enter > Realiza la operación e ^(2.5)
4 x2 = log (2.5) % <enter > Realiza la operación ln (2.5)
5 x3 = log10 (2.5) % <enter > Realiza la operación log (2.5)
6 x4 = abs ( -2.5) % <enter > Realiza la operación | -2.5|
7 x5 = sqrt (2.5) % <enter > Realiza la operación 2.5^(0.5)
8 x6 = sin (2.5) % <enter > Realiza la operación sen (2.5)
9 x7 = cos (2.5) % <enter > Realiza la operación cos (2.5)
10 x8 = tan (2.5) % <enter > Realiza la operación tan (2.5)
11 x9 = factorial (5) % <enter > Realiza la operación 5!
12 x10 = asin (0.5985) % <enter > Realiza la operación asen (0.5985)
13 x11 = acos ( -0.8011) % <enter > Realiza la operación acos ( -0.8011)
14 x12 = sinh (2.5) % <enter > Realiza la operación senh (2.5)
15 x13 = cosh (2.5) % <enter > Realiza la operación cosh (2.5)
1.4.8 Ejemplo. Expresión con funciones matemáticas
Un simple pero representativo ejemplo de algunas funciones matemáticas que se pueden ejecutar en Matlab se aprecia al realizar la evaluación de la expresión matemática 1.1 considerando las constantes x= 0.8 y a = 0.4

Solución. La secuencia de la declaración de los valores de las variables, en la ventana de comandos, para hallar el valor de p es:
1 clc % <enter > Limpieza de la ventana de comandos
2 clear all % <enter > Limpieza del espacio de trabajo
3 x = 0.8; % <enter > Asignación de valor a la variable x
4 a = 0.4; % <enter > Asignación de valor a la variable a
5 p = sqrt (abs(exp(-pi*a*x)-sin(x)/cos(x)-log (2*x+a^2))) % <enter > Cálculo
1.4.9 Creación de figuras
En visualización gráfica la función figure es utilizada para crear ventanas de figuras. Para identificar una figura es conveniente ingresar un valor entero positivo entre paréntesis; por ejemplo:
1 clc % <enter > Limpieza de la ventana de comandos
2 clear all % <enter > Limpieza del espacio de trabajo
3 figure (1) % <enter > Abre una figura con la rotulación 1
4 figure (5) % <enter > Abre una figura con la rotulación 5
1.4.10 Funciones de limpieza
El uso de las funciones clc, clear all y close all son de gran ayuda para realizar procedimientos de limpieza del área de trabajo. Es recomendable utilizar estas funciones al iniciar una nueva serie de instrucciones. Ejemplo:
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
1.4.11 Uso del editor de Matlab
Otra opción para escribir código fuente es utilizar el editor de Matlab (New Script), donde se pueden crear scripts y archivos de funciones. Ejemplo:
1 clc % <enter > Limpieza de la ventana de comandos
2 clear all % <enter > Limpieza del espacio de trabajo
3 a1 = 3; % Asignación de valor a la variable a1
4 b1 = 2; % Asignación de valor a la variable b1
5 c1 = 1; % Asignación de valor a la variable c1
6 d1 = b1^2 -4*a1*c1 % Cálculo de d1
7 r1 = (– b1+ sqrt (d1)) /(2*a1) % Cálculo de r1
8 r2 = (–b1 – sqrt (d1)) /(2*a1) % Cálculo de r2
Una característica de mucha utilidad del editor es la capacidad para definir bloques de código (celdas); por lo tanto, hay la posibilidad de ejecutar independientemente cada celda, como también la de ejecutar todas las celdas en conjunto. Ejemplo:
1 clc % <enter > Limpieza de la ventana de comandos
2 clear all % <enter > Limpieza del espacio de trabajo
3 %% Ejemplo de celdas de editor
4 %% Parte 1
5 a = 1; % Asignación de valor a la variable a
6 b = 2; % Asignación de valor a la variable b
7 cal1 = sinh (a)+ cosh (a)-exp(a) % Evaluación
8 cal2 = tanh (a+b)-tanh (a-b)-sinh (2*b)/( cosh (a*b)* cosh (a-b)) % Evaluación
9 %% Parte 2
10 c = 60* pi /180; % Asignación de valor a la variable c
11 d = 35* pi /180; % Asignación de valor a la variable d
12 n = 4/3; % Asignación de valor a la variable n
13 cal3 = c-d+ asin (n*sin(d- asin (sin(c)/n))) % Evaluación
14 %% Parte 3
15 e = 12; % Asignación de valor a la variable e
16 f = 7; % Asignación de valor a la variable f
17 cal4 = factorial (e)/ factorial (f)/ factorial (e-f) % Evaluación
1.4.11.1 Ejemplo. Reacciones en una viga empotrada con carga puntual
Se requiere calcular las fuerzas de reacción en una viga empotrada (figura 1.4), de acuerdo a las ecuaciones 1.2a, 1.2b, 1.2c y 1.2d.




Figura 1.4. Viga empotrada con carga puntual aplicada
Solución. Para el desarrollo de este ejemplo se consideran los siguientes valores: = L1 = 2m, L2 = 2m = 2m y P = 5KN(↓), siendo la secuencia de instrucciones en un fichero script:
1 % Reacciones en los extremos de una viga empotrada
2 clc; % Limpieza de la ventana de comandos
3 clear all; % Limpieza del espacio de trabajo
4 close all; % Limpieza de las figuras abiertas
5 L1 = 2; % Longitud desde el inicio hasta la ubicación de la carga
6 L2 = 2; % Longitud desde la ubicación de la carga hasta el final
7 P = 5; % Magnitud de la carga aplicada
8 L = L1 + L2; % Longitud total de la viga
9 Ri = ((P*L2^2) /(L^3)) *(3*L1+L2); % Fuerza de reacción parte izquierda
10 Mi = (P*L1*L2^2)/L^2; % Momento de reacción parte izquierda
11 Rj = ((P*L1^2) /(L^3))*(L1 +3*L2); % Fuerza de reacción parte derecha
12 Mj = –(P*L1^2*L2)/L^2; % Momento de reacción parte derecha
1.5 VECTORES Y MATRICES
El contenido de esta sección presenta las funciones que aparecen normalmente en el código fuente de los programas desarrollados pertenecientes a los capítulos que involucran el análisis de sistemas de un grado y varios grados de libertad.
1.5.1 Representación de un vector
Un vector se representa como un arreglo unidimensional, cuyas componentes se escriben dejando un espacio, como se muestra en la expresión 1.3:

1.5.2 Operador
El operador colon permite generar las componentes de un vector a partir de un valor referencial; dichas componentes resultantes son producto de una progresión aritmética que tiene por diferencia común sucesiva al valor referencial asignado. Se puede considerar el valor referencial para originar incrementos o decrementos. Las opciones para representar un vector en función del operador colon se muestran en las expresiones 1.4a, 1.4b y 1.4c:

donde
a1 = valor inicial de la progresión aritmética
d = valor referencial o diferencia común sucesiva
a2 = valor final de la progresión aritmética
El siguiente ejemplo presenta la creación de un vector fila que va de 0.2 a 1.0, con una razón de incremento de 0.1:
1 clc; % <enter > Limpieza de la ventana de comandos
2 clear all; % <enter > Limpieza del espacio de trabajo
3 x = 0.2:0.1:1 % <enter > Creación de un vector
4 n = length (x) % <enter > Cálculo mediante length (número de elementos)
y en el caso de considerar la razón de 0.1 como decremento:
1 clc; % <enter > Limpieza de la ventana de comandos
2 clear all; % <enter > Limpieza del espacio de trabajo
3 x = 1.0:-0.1:0.2 % <enter > Creación del vector x
Si el objetivo es crear un vector fila que va de 0.2 a 1.0 con una razón de incremento de 0.12, entonces:
1 clc; % <enter > Limpieza de la ventana de comandos
2 clear all; % <enter > Limpieza del espacio de trabajo
3 x = 0.2:0.12:1 % <enter > Creación del vector x
4 n = length (x) % <enter > Cálculo mediante length (número de elementos)
Con el operador colon también se puede generar un vector fila que va de 1 a 15 con una razón de incremento de 1, de la siguiente manera:
1 clc; % <enter > Limpieza de la ventana de comandos
2 clear all; % <enter > Limpieza del espacio de trabajo
3 x = 1:15 % <enter > Creación del vector x
4 n = length (x) % <enter > Cálculo mediante length (número de elementos)
1.5.3 Vector columna
Se hace posible crear un vector columna, de forma conveniente, al tomar la transpuesta de un vector fila:
1 clc; % <enter > Limpieza de la ventana de comandos
2 clear all; % <enter > Limpieza del espacio de trabajo
3 x1 = (0.1:0.1:1.0) ' % <enter > Con el apóstrofe se crea un vector columna
4 x2 = (1.0:-0.1:0.1) ' % <enter > Con el apóstrofe se crea un vector columna
5 n = length (x) % <enter > Cálculo mediante length (número de elementos)
1.5.4 Función linspace
Al utilizar la función linspace se declara la cantidad de componentes n que tendrá un vector; y sin ser necesario especificar la diferencia común sucesiva entre estos, habrá un mismo intervalo de separación entre los componentes de dicho vector. En la expresión 1.5, la cual también muestra la sintaxis de la función lins-pace, se identifica a a1 como el valor inicial, a2 como el valor final y n como la cantidad de componentes del vector.

A continuación, se presentan ejemplos de la función linspace:
1 clc; % <enter > Limpieza de la ventana de comandos
2 clear all; % <enter > Limpieza del espacio de trabajo
3 x = linspace (–2, 6.5, 8) % <enter > Creación de vector mediante linspace
4 y = linspace (2, 10, 10) % <enter > Creación de vector mediante linspace
5 z = linspace (–2, 22, 5) % <enter > Creación de vector mediante linspace
6 w = linspace (–12, –2, 10) % <enter > Creación de vector mediante linspace
1.5.5 Manipulación de vectores
Hay varias formas de manipular las componentes de un vector cualquiera, como el de la expresión 1.6.

En el siguiente ejemplo, se muestra como obtener una serie de posibles vectores con respecto a un vector base; dicho vector base es el vector b.
1 clc; % <enter > Limpieza de la ventana de comandos
2 clear all; % <enter > Limpieza del espacio de trabajo
3 b = [1 2 3 4 5 6 7 8 9 10 11 12] % <enter > Creación del vector b
4 cal1 = b (3:7) % <enter > Extracción de elementos en el vector cal1
5 cal2 = b(2: end) % <enter > Extracción de elementos en el vector cal2
6 cal3 = b([1 3 5 7 9]) % <enter > Extracción de elementos en el vector cal3
7 cal4 = b (1:2:9) % <enter > Extracción de elementos en el vector cal4
8 cal5 = b (1:12) % <enter > Extracción de elementos en el vector cal5
9 cal6 = b([2 4 6 8 10]) % <enter > Extracción de elementos en el vector cal6
10 cal7 = b(1 ,:) % <enter > Extracción de elementos en el vector cal7
Para modificar un vector se utilizan escalares, los cuales realizan las modificaciones elemento por elemento. Ejemplo:
1 clc; % <enter > Limpieza de la ventana de comandos
2 clear all; % <enter > Limpieza del espacio de trabajo
3 x = [ –2 1 3 5 7 9 10]; % <enter > Creación del vector x
4 z1 = x –1 % <enter > Cálculo del vector z1
5 z2 = x + 2 % <enter > Cálculo del vector z2
Si por algún motivo se desea modificar algún componente de un vector solo se debe hacer referencia a la posición numérica de dicha componente entre paréntesis (), en la variable que representa al vector y, seguidamente, declarar el tipo de operación; por ejemplo:
1 clc; % <enter > Limpieza de la ventana de comandos
2 clear all; % <enter > Limpieza del espacio de trabajo
3 z = [ –2 1 3 5 7 9 10]; % <enter > Creación del vector z
4 z(2) = z(2) /2; % <enter > Cambio del segundo elemento del vector z
5 z(3) = z(3) /3; % <enter > Cambio del tercer elemento del vector z
6 z % <enter > Muestreo del vector z en la ventana de comandos
1.5.6 Función sort
Si se requiere ordenar las componentes de un vector de forma ascendente o descendente con la finalidad de establecer un orden se utiliza la función sort. La cual, por defecto, ordena las componentes en forma ascendente; y para obtener un orden descendente solo habrá que colocar el argumento descend entre apóstrofes como argumento de ingreso de la función sort; por ejemplo:
1 clc; % <enter > Limpieza de la ventana de comandos
2 clear all; % <enter > Limpieza del espacio de trabajo
3 q = [ –1 6 15 –7 31 2 –4 –5 –8 –2]; % <enter > Creación del vector q
4 qn = sort (q) % <enter > Forma ascendente por defecto
5 qn = sort (q, 'descend' ) % <enter > Forma descendente
1.5.7 Mínimos y máximos de un vector
Hay la posibilidad de encontrar dentro de un vector x su máximo y mínimo valor, además de la ubicación de dichos valores. Para obtener la componente más pequeña del vector y su ubicación se utiliza la función min; cuya sintaxis se muestra en la expresión 1.7:

De manera similar, para obtener la componente más grande y su ubicación se utiliza la función max; cuya sintaxis se indica en la expresión 1.8:

A continuación, se muestra cómo obtener para los vectores x y y sus valores extremos y sus respectivas ubicaciones:
1 clc; % <enter > Limpieza de la ventana de comandos
2 clear all; % <enter > Limpieza del espacio de trabajo
3 x = linspace (pi, pi, 10) % <enter > Creación del vector x
4 y = sin(x) % <enter > Creación del vector y
5 [ymax , locmax ] = max(y) % <enter > Posición y máximo de un vector
6 [ymin , locmin ] = min(y) % <enter > Posición y mínimo de un vector