Practica 2 01
Practica 2 01
Practica 2 01
LABORATORIO DE CONTROL I
Objetivo:
El objetivo de esta práctica es dar una introducción a la programación en Matlab.
Introducción:
Los lenguajes de programación de computadoras como Matlab ofrecen
características que permiten controlar el flujo de ejecución de órdenes basadas en
estructuras de toma de decisiones. El control de flujo es extremadamente poderoso ya
que permite que cálculos pasados influyan sobre operaciones futuras.
Debido a que las estructuras de control de flujo a menudo contienen numerosas
órdenes de Matlab, suelen aparecer en archivos-M (M-files), en lugar de escribirse
directamente en la línea de orden de Matlab.
Desarrollo:
Durante el desarrollo de esta practica se vera el funcionamiento de la
programación de Matlab, en cada una de las explicaciones se dan ejemplos del
funcionamiento de la programación de Matlab, se recomienda al alumno realicé dichos
ejemplos para su mejor entendimiento.
1
if expresión Una simple estructura if-else-end donde órdenes se
órdenes ejecuta si todos los elementos en la expresión son
end verdaderos
Los bucles deben evitarse siempre que haya un método de un array o matriz
equivalente que permita resolver el problema.
» n=1:10; %Vector n, para mostrar como hacer la operación anterior sin bucle
2
end %Finaliza ciclo for externo
» manzanas=10; %Asigna el número de manzanas
Funciones en archivos-M
- Los archivos-M se crean en un editor de texto o el editor de Matlab.
- El nombre de la función y el nombre del archivo deben de ser idénticos. Por
ejemplo la función linspace se almacena en un archivo denominado linspace.m.
- Las primeras líneas de comentarios hasta la primera línea de no comentario en un
archivo-M de función son el texto de ayuda que se devuelve cuando se solicita ésta,
help linspace retorna la ayuda de la función.
- La primera línea de ayuda, conocida como la línea H1, es la línea que examina la
orden lookfor.
- Todas las variables dentro de una función se aíslan del espacio de trabajo de
Matlab. Las únicas conexiones entre las variables dentro de la función y el espacio de
trabajo de Matlab son las variables de entrada y salida. Si una función cambia el valor
de cualquier variable de entrada, los cambios aparecen sólo dentro de la función y no
afecta a las variables en el espacio de trabajo de Matlab.
- Cuando una función tiene más de una variable de salida, éstas se encierran entre
corchetes, p.e. [V,D] = eig(A).
- El número de variables de entrada pasadas a una función están disponibles dentro de la
función en la variable nargin. El número de variables de salida solicitadas cuando una
función se llama está disponible dentro de la función en la variable nargout.
- El comando echo on causa que se visualicé la ejecución del archivo-M en el espacio de
trabajo de Matlab. El comando echo off deshabilita la visualización.
- La función input obtiene la entrada del usuario.
- El comando pause causa que se detenga la ejecución y esperar un tiempo o que el
usuario presione una tecla para continuar con la ejecución
Como ejemplo de las funciones abriremos una función de Matlab llamada linspace:
function y = linspace(d1, d2, n)
%LINSPACE Linearly spaced vector.
% LINSPACE(x1, x2) generates a row vector of 100 linearly
3
% equally spaced points between x1 and x2.
%
% LINSPACE(x1, x2, N) generates N points between x1 and x2.
%
% See also LOGSPACE, :.
% Copyright (c) 1984-98 by The MathWorks, Inc.
% $Revision: 5.6 $ $Date: 1997/11/21 23:29:09 $
if nargin == 2 %si no da ningún valor para n p.e.
x=linspace(0,pi), n = 100; %suministra un valor por
defecto de 100
end
if n~=1 %Si es diferente de 1 calcula la linea
y = d1:(d2-d1)/(n-1):d2;
else
y = d2;
end
Se pueden ver más ejemplos abriendo los archivos-M de Matlab.
Archivos Scripts
Funcionan igual que los archivos-M, la diferencia está en que a los archivos
Scripts no se les pueden pasar argumentos y las variables definidas y manipuladas
dentro de los archivos Scripts operan globalmente en el espacio de trabajo de Matlab y
por lo tanto pueden ser modificadas. Estos archivos no comienzan con el comando
function de los archivos de función.
Los archivos Scrip son también convenientes para introducir grandes array que
pueden, por ejemplo provenir de medidas de laboratorio. Utilizando un editor de texto
para introducir uno o más array, las capacidades de edición facilitan la corrección de
errores sin que se tenga necesidad de escribir otra vez todo el array.
4
p=sin(n*pi/10); %Calcula el vector p sin necesidad de un bucle
Para ejecutarse simplemente se da el nombre del archivo en el espacio de trabajo de
Matlab.
Para ejecutar un archivo o función hay que darle el directorio de trabajo en donde se
localiza el archivo o función desde el área de trabajo de Matlab darle:
cd c:\directorio_de_trabajo
Polinomios
- Los polinomios se representan en Matlab por vectores filas de sus coeficientes en
orden descendente.
- Matlab no tiene incorporada una función para sumar polinomios. Sin embargo, es fácil
5
construir una rachivo-M de función que lo haga.
- polyvar (p, x) evalúa el polinomio p en todos los valores de x
ó bien realizar una función (archivo-M) en un editor de texto o el editor de Matlab, para
la suma de dos polinomios:
function p=polysuma(a, b)
%POLYSUMA suma de polinomios
%POLYSUMA (a, b) suma el polinomio a y b
%Resultado esta en el polinomio p
echo on; %Visualiza la ejecución de la función,
% lo que no tenga ;
if nargin<2, %Checa el número de argumentos de entrada
%error('No están completos los argumentos'),
%Si se deje el mensaje de error no realizara nada
6
%solo presentara mensaje
b=a
end
a=a(:).' %Asegurarse que las entradas
b=b(:).' %son vectores renglón
na=length(a) %Encuentra la longitud de a y b
nb=length(b)
if nargin<2, %fue un polinomio regresa el mismo polinomio
p=[zeros(1,nb-na) a]+[zeros(1,na)] %pone ceros
else %En caso contrario suma los polinomios
p=[zeros(1,nb-na) a]+[zeros(1,na-nb) b] %pone ceros
end %Termina Función
Nota: para cambiar de directorio se hace igual que en el sistema operativo con cd (para
grabar en otro directorio o ver los archivos de otros directorios).
Ejercicios:
1. Crear una función Matlab que, a partir de una matriz dada, genere una matriz
cuadrada añadiendo filas o columnas de ceros, según sea necesario. La función se
llamará cuadra y se guardará en el fichero cuadra.m.
2. Crear una función Matlab que sea capaz de multiplicar dos matrices y obtener la
matriz inversa del resultado La declaración de la función debe ser como la siguiente:
3. Crear una función Matlab que, tomando como entrada un vector V cualquiera,
represente en una misma ventana (subplot) los dos gráficos siguientes:
· Gráfico 1: valores de cada elemento de V, de cada elemento de V al cuadrado y de
cada elemento de V al cubo (eje y) con respecto al número de orden (eje x).
7
· Gráfico 2: valores de V (eje y) con respecto a los valores de V2 (eje x).
El vector de entrada se pueda insertar como el siguiente:
4. Crear un menú desde donde se puedan llamar todas las funciones anteriores, así
como la vista en clase para la suma de polinomios.