Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pgina 1 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
INTRODUCCIN A LA PROGRAMACIN Y AL USO DE MATLAB
ATENCION
El presente trabajo, que trata sobre los contenidos segn programa analtico de la
ctedra, es solamente a fines de LECTURA BSICA INTRODUCTORIA.
OBJETIVOS
REFLEXION
Pgina 2 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Descripcin
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Resumiendo
MATLAB: MATrix LABoratory. (Laboratorio de matrices)
Pgina 4 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Como esta configuracin puede ser cambiada fcilmente por el usuario, es posible que
en muchos casos concretos lo que aparezca sea muy diferente. En cualquier caso, una
vista similar se puede conseguir con el citado comando.
Esta ventana inicial requiere unas primeras explicaciones.
La parte ms importante de la ventana inicial es la subventana Command Window
(ventana principal), que emplearemos para transmitir las rdenes a Matlab.
Matlab es un programa command-driven, es decir, que se introducen las rdenes
escribindolas una a una a continuacin del smbolo >> (prompt: aviso caracterstico),
que aparece en una interfaz de usuario (subventana).
En esta subventana se ejecutan los comandos de MATLAB, a continuacin del prompt
que indica que el programa est preparado para recibir instrucciones.
Pgina 5 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Para apreciar desde el principio la potencia de MATLAB, se puede comenzar por escribir
en la Command Window a continuacin del prompt la siguiente lnea y al finalizar pulsar
enter.
>> A=rand(6),B=inv(A),B*A
Pgina 6 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Pgina 7 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Al ejecutar sta sentencia aparecer una nueva ventana como la siguiente.
En la Figura se puede observar que se abre una nueva ventana en la que aparece
representada la funcin sin(x).
Esta figura tiene un ttulo "Funcin seno(x)" y un cuadriculado o "grid".
En realidad la lnea de comando anterior contiene tambin varias instrucciones
separadas por comas o puntos y comas.
En la primera se crea un vector x con 801 valores reales entre -4 y 4, separados por una
centsima.
A continuacin se crea un vector y, cada uno de cuyos elementos es el seno del
correspondiente elemento del vector x.
Despus se dibujan los valores de y en ordenadas frente a los de x en abscisas.
Las dos ltimas instrucciones establecen la cuadrcula y el ttulo.
Como mencionramos, en captulos siguiente veremos con mas detalles las
representaciones grficas.
Pgina 8 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
AYUDA EN MATLAB
Ayuda en lnea
Como mencionramos, ste documento es tan slo una introduccin -muy resumida- del
lenguaje y del manejo de Matlab, por lo que antes de seguir, es conveniente indicar
cmo puede obtenerse ayuda sobre cualquier detalle referente a Matlab.
Desde Matlab pueden obtenerse explicaciones sobre un tema particular. Hay varios
mtodos.
Con el comando help
N 1)
Si se escribe slo help, se obtiene una lista de toolboxes y utilidades
instaladas, que se pueden elegir para su consulta por medio de un
hipervnculo que los lleva a la pgina de ayuda.
Tambin puede obtenerse informacin sobre uno de los temas de esa lista, por
ejemplo:
>>help elfun
(proporciona informacin sobre funciones matemticas elementales)
Pgina 9 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
N 2) En un segundo nivel es posible obtener ayuda sobre un toolbox determinado,
escribiendo:
>> help nombre_toolbox
(Ejemplo >> help simulink)
Pgina 10 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Con la ventana de ayuda.
Escogiendo en la cinta de tareas el men Help dispondremos de opciones distintas de
ayudas e informacin sobre el software.
Eligiendo la opcin Documentation se abre una ventana general donde Tambin puede
escribirse directamente en la zona superior izquierda el nombre del comando deseado:
por ejemplo, para buscar informacin sobre sqrt (raiz cuadrada)
Pgina 11 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Con Demos
Las demostraciones (demos) son un conjunto de scripts (programas), modelos o videos
existentes dentro del entorno de ayuda de MATLAB, que ofrecen una perspectiva de las
capacidades del programa por medio de la ejecucin de los mismos.
>>demo
Nos abre una ventana de ayuda de como empezar con Demos
Pgina 12 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Desenvolverse en la interfaz de usuario
Reglas bsicas.
El punto decimal es . (no una coma).
En Matlab, las maysculas y las minsculas son distintas. Es decir, A es una
variable diferente de a.
Matlab distingue entre maysculas y minsculas por lo que casi siempre los comandos e
instrucciones se escriben con minsculas.
Por ejemplo, no es lo mismo pi que Pi. Podemos teclear ambas expresiones y descubrir
que la primera funciona perfectamente mientras que la segunda causa un error al ser
ejecutada.
Visualizacin
Por omisin 4 decimales
14 decimales
4 decimales
15 decimales
2 decimales
Exp. hexadecimal
Cociente de entero
Ejemplo
1.3333
1.33333333333333
1.3333e+000
1.333333333333333e+000
1.33
3ff5555555555555
4/3
Pgina 13 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
COMANDOS BSICOS
En esta seccin se explica cmo usar Matlab a modo de calculadora. Empecemos con
algo sencillo: las operaciones matemticas elementales.
Manejo de variables
Asignacin
Para asignar un valor a una variable, por ejemplo x, usamos el signo =.
Por ejemplo: x=2+3
x=2+3 (en este caso estamos asignando al identificador x el valor de la suma 2+3)
x=
5
Si no se asigna el resultado a ninguna variable, Matlab lo asigna por defecto a la
variable ans (answer):
2+3
ans =
5
Para saber cul es el valor asignado a una determinada variable, basta introducir el
nombre de la variable:
x
x=
5
Nombres de variables
Se debe tener cuidado con los nombres de las variables que se utilizan.
Probar lo siguiente:
sin = 5
y = sin(pi)
La variable sin oculta la funcin del mismo nombre.
Borrar variables
Pgina 14 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
clear sup
clear all
potenciacin
multiplicacin
divisin
suma
resta
Pgina 15 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Operadores relacionales
Se utilizan para establecer una relacin entre dos valores crendose una expresin
relacional. Esta expresin compara los valores entre si y produce un resultado de
certeza o falsedad (verdadero o falso) denominado valor lgico.
Los operadores relacionales comparan valores del mismo tipo (numricos o carcter).
>
<
==
~=
<=
>=
mayor que
menor que
igual que
diferente que
menor o igual que
mayor o igual que
Dos observaciones:
N 1) El operador relacional igual que, se construye con dos smbolos ==.
El motivo es: si se escribe x=3, el resultado es que se le asigna a x el valor 3. En
definitiva, no se hace ninguna pregunta.
Si lo que se desea es preguntar es x igual a 3?, no se puede escribir x=3, pues en este
caso x tomara el valor 3, independientemente de lo que valiera antes.
En cambio, x==3 es el anlogo en lenguaje informtico a la pregunta: es x igual a 3?.
Tras la pregunta x==3 la variable x sigue valiendo lo mismo que antes de realizar la
misma.
N 2) La tilde ~ del operador diferente que se consigue apretando la tecla Alt y sin
soltarla escribir con el teclado el nmero 126. En algunos sistemas operativos,
tambin sirve apretar AltGr y, sin soltarla, apretar la tecla 4.
Operadores lgicos
Estos operadores se utilizan para establecer relaciones entre valores lgicos, crendose
una expresin lgica. Estos valores pueden ser resultado de una expresin relacional.
Tipos de operadores Lgicos
Denominacin
Conjuncin
Disyuncin
Negacin
Cdigo Matlab
&
|
~
Cdigo ASCII
Alt + 38
Alt + 124
Alt + 126
Expresiones simblicas
Si deseamos trabajar con smbolos, debemos indicarle al programa que se trata de
smbolos.
Para esto utilizamos el comando sym por ejemplo, si escribimos: 2/3
>> 2/3
ans =
Pgina 16 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
0.6667
En cambio, si queremos que 2 y 3 se consideren como smbolos (de forma que slo se
opere de forma exacta con ellos), deberemos escribir:
>>sym(2/3)
ans =
2/3
Si deseamos realizar la siguiente operacin aritmtica: (2/3)+(1/4), Debemos escribir:
>>sym(2/3)+sym(1/4)
ans =
11/12
o tambin
>> sym((2/3)+(1/4))
ans =
11/12
Anlogamente se pueden definir variables; por ejemplo, para definir la variable x
podramos escribir:
>>x= sym('x')
Una vez definida la variable x, podremos realizar operaciones simblicas con ella:
>>x+3*x
ans =
4*x
Si tenemos que
simultneamente,
utilizar
varios
smbolos
es
recomendable
definirlos
todos
Esta instruccin va seguida de los smbolos a definir, separados por espacios; Ej.:
>>syms t s x y
Funciones elementales.
Las funciones, en Matlab, se escriben introduciendo el argumento entre parntesis a
continuacin del nombre de la funcin, sin dejar espacios. Por ejemplo:
y=exp(0)
y=
1
La funcin exp es el nmero natural e elevado a la potencia indicada entre parntesis
(en este caso cero).
He aqu una tabla con algunas funciones elementales
sin
seno
cos
coseno
Pgina 17 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
tan
tangente
sec
secante
csc
cosecante
cot
cotangente
exp
exponencial
log
logaritmo natural
sqrt
raz cuadrada
abs
valor absoluto
Para obtener las funciones trigonomtricas inversas, basta aadir una a delante del
nombre de la funcin. Y para las funciones hiperblicas, una h al final.
Por ejemplo, atanh(x) es el arcotangente hiperblico de x:
>> z=atanh(2)
z=
0.5493 + 1.5708i (dnde z es un nmero complejo).
No presentar el resultado en la pantalla
En ocasiones, es interesante no presentar el resultado en la pantalla (por ejemplo,
cuando se trata de una lista de datos muy larga). Eso se consigue poniendo un punto y
coma al final de la instruccin.
>> y=sqrt(4);
>>
(El resultado no aparece, pero sin embargo el clculo se ha realizado)
ya que si hacemos:
>> y
y=
2
(Vemos que y=2)
Guardar y cargar ficheros de datos.
save nom_arch
load nom_arch
Pgina 18 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
TRATAMIENTO DE VECTORES, MATRICES Y POLINOMIOS
La especialidad de Matlab es el manejo de matrices. Recordemos que Matlab son las
siglas de Matrix Laboratory.
VECTORES
Carga de vectores
Vector fila: se define introduciendo los componentes, separados por espacios o por
comas y entre corchetes
v=[sqrt(3) 0 -2]
v=
1.7321 0 -2.0000
Vector columna: se separan las filas por puntos y comas
w=[1;0;1/3]
w=
1.0000
0
0.3333
Operaciones elementales
Transposicin: Para la operacin transponer (cambiar filas por columnas) se utiliza el
apstrofe
>> w=[1 0 1/3]
w=
1.0000
0
>> w'
ans =
1.0000
0
0.3333
(vector w)
0.3333
(vector transpuesto de w)
Suma:
v+w'
ans =
2.7321 0 -1.6667
Producto:
v*w
ans =
1.0654
Pgina 19 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Componentes equiespaciados: Para crear un vector de este tipo, se emplean los dos
puntos y no son necesario los corchetes.
x=4:2:10
x=
4 6 8
10
MATRICES
Carga de matrices
Para introducir matrices, se separa cada elemento con un espacio o con coma y cada
fila con un punto y coma
>> M = [1 2 3 ;4 5 6 ;7 8 9]
M=
123
456
789
Referencia a componente, fila o columna
Para referirse a un componente de la matriz
Pgina 20 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
>> M(3,1)
ans =
7
o tambin
>> M(3)
ans =
7
>> M(8)
ans =
6
Para referirse a toda una fila o a toda una columna se emplean los dos puntos:
>> v2=M(2,:)
v2 =
4
>> v1=M(:,2)
v1 =
2
5
8
B = A.'
Pgina 21 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
v = poly(A)
devuelve
un
vector
con
los
coeficientes
del
polinomio
[m,n] = size(A)
n = size(A)
nf = size(A,1)
nc = size(A,2)
30 36 42
66 81 96
102 126 150
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
tipos particulares. Algunas de estas funciones son las siguientes:
eye(4)
zeros(3,5)
zeros(4)
ones(3)
ones(2,4)
rand(3)
rand(2,5)
2 x1 + 4 x2 + 6 x3 = 18
4 x1 + 5 x2 + 6 x3 = 24
3 x1 + x2 2 x3 = 4
La solucin de este sistema es:
>> A=[2 4 6 18; 4 5 6 24; 3 1 -2 4];
rref(A)
ans =
1 0 0 4
0 1 0 -2
0 0 1 3
De donde podemos observar que 4, -2 y 3 son soluciones del sistema
Ayuda sobre matrices
>>help elmat)
POLINOMIOS
Representacin: los polinomios se representan por vectores cuyas componentes son
los coeficientes del mismo.
Si tenemos
2
p(x) = x - 3x + 2 ,ste polinomio se representa por un vector p
p=[1 -3 2]
p=
1 -3 2
Races: Para hallar las races del polinomio, se hace
Pgina 23 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
roots(p)
ans =
2
1
Valuacin: para hallar el valor de P(x) para un determinado valor de x.(por ejemplo,
para x=0)
polyval(p,0)
ans =
2
Producto: Utilizamos una funcin llamada conv() ( producto de convolucin).
En el siguiente ejemplo vamos a observar cmo podemos multiplicar un polinomio de
segundo grado por otro de tercer grado:
>> pol1=[1 -2 4]
pol1 =
1 -2 4
>> pol2=[1 0 3 -4]
pol2 =
1 0 3 -4
>> pol3=conv(pol1,pol2)
pol3 =
1 -2 7 -10 20 -16
Comandos principales: Los principales comandos para trabajar con polinomios son los
siguientes:
roots(pol)
polyval(pol,x)
polyvalm(pol,A)
conv(p1,p2)
[c,r]=deconv(p,q)
residue(p1,p2)
polyder(pol)
Pgina 24 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
polyder(p1,p2)
Plot: las grficas son producidas por l comando plot, aunque se pueden generar
grficas de otras maneras, en este caso mostraremos el uso del mismo.
Para ver las especificaciones posibles, teclear help plot.
Representacin de la funcin seno entre 0 y 10.
Para empezar creamos una variable x que vaya de cero a 10:
x=0:0.1:10;
y a continuacin, calculemos sin(x) almacenando el resultado en la variable y:
y=sin(x);
Para trazar el grfico, se emplea la funcin plot:
plot(x,y)
y se obtiene en otra ventana el siguiente grfico.
Axis: entre los muchos comandos que se pueden utilizar para modificar los grficos, es
muy til el empleado para cambiar la escala de los ejes.
La orden es:
>> axis([x1 x2 y1 y2])
donde x1, x2 son los lmites inferior y superior del eje x, e y1 e y2 los del eje y.
Para representar los puntos o datos con smbolos de colores, se aade la especificacin
entre apstrofes al comando plot.
Vamos a crear una variable con dos filas que contenga los nmeros del 1 al 10 en la
primera fila, y el doble de esos nmeros en la segunda, y dibujarlos con puntos rojos:
>> x1=0:10
x1 =
0 1 2
10
>> x2=2*x1
Pgina 25 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
x2 =
0
10
12
14
16
18
20
>> x=[x1;x2]
x=
0 1 2
0 2 4
3
6
4
8
5
10
6
12
7
14
8
16
9
18
10
20>> plot ( x (1, :) , x (2 , : ) , 'ro )
traza un cuadrcula.
xlabel ('ttulox')
ylabel('ttuloy')
title
('Plano complejo')
Para imprimir una figura, basta seleccionar print del men de la figura.
El comando plot nos da la opcin de cambiar la representacin de los puntos de la
grfica, las formas ms habituales son:
Car.
.
o
x
Representacin
punto
crculo
marca
Car.
*
:
Representacin
asterisco
slido
punteado
Car.
-+
-.
Representacin
segmento
ms
segmento punto
Color
amarillo
azul
blanco
Letra
c
m
k
Color
cyan(azul claro)
magenta
negro
Letra Color
rojo
r
verde
g
Pgina 26 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
El comando fplot nos permite dibujar la grfica de una funcin con la siguiente sintaxis:
>>fplot(`funcin',[inicio,final])
El comando clf nos borra la grfica creada.
Para que la grfica tenga una leyenda ubicada en el 3 cuadrante para distinguir las
series graficadas,
legend('seno',3)
Para incluirle al grfico una rejilla o cuadriculado usamos:
grid on
Ejemplo: dibujar la grfica de la funcin seno entre cero y 2*pi, con un ttulo y con una
leyenda que aparezca en el 3 cuadrante.
Adems la grafica aparecer con una grilla y en el Command Windows los valores
extremos de los ejes.
>> fplot('sin',[0,2*pi]),title('FUNCION seno'),legend('seno',3),grid on,axis
ans =
0 6.2832 -1.0000 1.0000
Pgina 27 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Un comando muy til tambin es [ejes]=ginput(#) con l que podemos sealar varios
puntos de la grfica y Matlab los desplegara en l Command Windows
Ejemplo :
>> x=-4:0.1:4; %Creamos l argumento
y=sin(x);
z=cos(x);
plot(x,z,'-',x,y,'.')
xlabel('Valores del tiempo');
ylabel('Funciones del tiempo');
title('Graficando con Matlab');
grid on ;axis;
% Ahora crearemos un mensaje en la pantalla;
legend(... %Creamos un mensaje que describa un poco la curva...
{'Grafica de sin','Grafica de cos'},...
'Color',[0.2078 0.6902 0.6784],...Definimos l color de fondo combinando rojo,verde,azul
'LineWidth',2,...%Definimos l ancho del borde
'XColor',[1 0 0.502],...%l color del borde con intensidades de 0 a 1
'YColor',[1 0 0.502],...
'FontName','Technic',...%Definimos l estilo de las letras
'Location','NorthWestOutside',...%Definimos la localizacion.
'EdgeColor',[1 0 0.502]);
[x,y]=ginput(3); [x,y]
Cuando se ejecute ste cdigo, se nos abre el grfico y una cruz mvil con el ratn, para
indicarle un punto de la grfica haciendo click y el cdigo nos devuelve las coordenadas
de tantos puntos como sea el argumento de ginput.
Pgina 28 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Pgina 29 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
2
>> 2+3i
ans =
2.0000 + 3.0000i
>> 2+3*i
ans =
8
>> 2+3*j
ans =
2.0000 + 3.0000i
Cuando i y j son variables utilizadas para otras finalidades, como unidad imaginaria
puede utilizarse tambin la funcin sqrt(-1), o una variable a la que se haya asignado el
resultado de esta funcin.
>> 2+3*sqrt(-1)
ans =
2.0000 + 3.0000i
Asignacin a vectores y matrices
La asignacin de valores complejos a vectores y matrices desde teclado puede hacerse
de las dos formas, que se muestran en el ejemplo siguiente:
(conviene hacer antes clear i, para que i no est definida como variable):
>> A = [1+2i 2+3i ; -1+i 2-3i]
A=
1.0000 + 2.0000i 2.0000 + 3.0000i
-1.0000 + 1.0000i 2.0000 - 3.0000i
>> A = [1 2; -1 2] + [2 3; 1 -3]*i
A=
1.0000 + 2.0000i 2.0000 + 3.0000i
-1.0000 + 1.0000i 2.0000 - 3.0000i
Puede verse que es posible definir las partes reales e imaginarias por separado. En este
caso s es necesario utilizar el operador (*), segn se muestra en el ejemplo anterior.
Pgina 30 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Pgina 31 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Casos Prcticos Resueltos
4
I. Graficar la funcin y = sin(x ), para x de 0 a 2pi, usando 200 puntos y usando 500
puntos
>> x=linspace(0,2*pi,200);plot(x,sin(x.^4),'r'),grid on,legend('y=sin(x^4)')
>>x=linspace(0,2*pi,500);plot(x,sin(x.^4)),grid on,legend('y=sin(x^4)')
Pgina 32 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
III. Hacer la grafica de dos rectas, escribir en esta grfica la solucin del sistema
de ecuaciones dada por estas dos rectas
2x + 3y = 13
2x y = 1
Pgina 33 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Pgina 34 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
VI. Hacer la codificacin en matlab para hallar la suma de los n primeros nmeros
naturales
>> fprintf('\t\tsuma de los n primeros numeros naturales\n');
n=input('ingrese el valor de n: ')
k=0;
for j=1:n
k=k+j;
end
fprintf('suma = %7f\n',k)
VII. Hacer la codificacin en matlab para hallar la suma de los cuadrados de los n
primeros nmeros naturales.
>> fprintf('\t\tsuma de los cuadrados de los n primeros numeros naturales\n');
n=input('ingrese el valor de n: ')
k=0;
for j=1:n
k=k+j*j;
end
fprintf('suma = %7f\n',k)
Pgina 35 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
X. Hacer la codificacin en matlab para graficar y calcular el rea de un rectngulo
dado la base y altura.
>> fprintf('\t\trea de un rectangulo\n')
a=input('ingrese el ancho del rectangulo: ')
h=input('ingrese la altura del rectangulo: ')
fprintf('rea del rectangulo = %5f\n',a*h)
x=linspace(0,a,500);y=linspace(0,h,500);y1=0;y2=h;x1=0;x2=a;plot(x,y1,'b.',x,y2,'b.',x1,y,'
b.',x2,y,'b.'); hold on
axis([-1 (a+1) -1 (h+1)])
axis square
XI. Hacer la codificacin en matlab para graficar y calcular el rea de un rombo
dado sus dos diagonales.
fprintf('\t\trea de un rombo\n')
a=input('ingrese la 1 diagonal del rombo: ')
b=input('ingrese la 2 diagonal del rombo: ')
fprintf('rea del rombo = %7f\n',(a*b)/2)
x1=linspace(0,a/2,500);x2=linspace(a/2,a,500);y1=(b/a)*x1;y2=-(b/a)*(x2-a);y3=(b/a)*x1;y4=(b/a)*(x2-a);...
plot(x1,y1,'r.',x2,y2,'r.',x1,y3,'r.',x2,y4,'r.')
axis ([-0.5 a+0.5 -(b/2+0.5) (b/2+0.5)])
XII. Hacer la codificacin en matlab tal que:
Lea dos nmeros.
El primero representar el da y mes de su nacimiento (por ejemplo 4 de diciembres ser
412).
El segundo nmero vendr dado por su edad.
Luego realice los siguientes clculos:
Multiplique el primer nmero por 2
Adicinale 5
Multiplquelo por 50
Smele el segundo nmero
Smele 365
Y rstele 615.
EI resultado vendr a ser la unin del primer nmero con el segundo.
Este juego es conocido.
a=input('Ingrese el dia y mes de su nacimiento, (ejemplo: 4 de diciembre ser 412): ');
b=input('Ingrese su edad: ');
z=(a*2+5)*50+b+365-615
Pgina 36 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
PROGRAMACIN CON MATLAB
Introduccin
Estos desarrollos pretenden servir de gua para dar los primeros pasos en la
programacin con Matlab. Para aprender a programar, el lenguaje que se emplee es
(hasta cierto punto) irrelevante, lo ms importante son los conceptos de lgica de
programacin. Una vez conocido un lenguaje, pasar a otro no suele resultar difcil. Como
Matlab es un lenguaje simple, resulta idneo para los comienzos.
Un programa consiste en una serie de instrucciones escritas en un lenguaje de
programacin que se ejecutarn secuencialmente (una detrs de otra). Por lo tanto, es
requisito previo conocer cmo escribirlas correctamente (sintaxis).
Creando Un Programa
En Matlab existen dos tipos de ficheros *.m, los ficheros de comandos (llamados
scripts en ingls) y las funciones.
Los SCRIPTS contienen simplemente un conjunto de comandos que se ejecutan
sucesivamente cuando se teclea el nombre del fichero en la lnea de comandos de
MATLAB o se incluye dicho nombre en otro fichero *.m.
Un fichero de comandos puede llamar a otros ficheros de comandos.
Si un fichero de comandos se llama desde de la lnea de comandos de MATLAB, las
variables que crea pertenecen al espacio de trabajo base de MATLAB y permanecen
en l cuando se termina la ejecucin de dicho fichero.
Las FUNCIONES permiten definir funciones enteramente anlogas a las de MATLAB,
con su nombre, sus argumentos y sus valores de retorno. Los ficheros *.m que
definen funciones permiten extender las posibilidades de MATLAB; de hecho existen
bibliotecas de ficheros *.m que se venden (toolkits) o se distribuyen gratuitamente (a
travs de Internet). Las funciones definidas en ficheros *.m se caracterizan porque la
primera lnea (que no sea un comentario) comienza con la palabra function, seguida
por los valores de retorno (entre corchetes [ ] y separados por comas, si hay ms de
uno), el signo igual (=) y el nombre de la funcin, seguido de los argumentos de entrada
(entre parntesis y separados por comas).
Su estructura es la siguiente:
function [lista de valores de retorno]= name(lista de argumentos)
Ficheros De Comandos (SCRIPTS)
La elaboracin de un scripts en Matlab es muy sencilla. Basta abrir un documento de
texto (se puede hacer con cualquier editor, Matlab trae uno incorporado), escribir las
instrucciones tal como se pondran en la ventana de comandos y guardar el documento
con la extensin .m (por ejemplo: miprog.m). Matlab reconoce automticamente los
ficheros que tienen extensin .m
Si en la ventana de comandos se introduce
>>miprog
las rdenes almacenadas en el fichero miprog.m se ejecutarn, una tras otra.
Pgina 37 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
A ese recorrido a travs de las instrucciones se le conoce con el nombre de flujo y las
rdenes de un programa se denominan sentencias.
El hecho de guardar una serie de instrucciones (el cdigo) en un fichero tiene de por s
algunas ventajas: evita el repetir las sentencias en la ventana de comandos.
La potencia de un programa se pone de manifiesto si en l se contienen instrucciones
que controlan qu sentencias se ejecutan en cada circunstancia.(estructuras de
control)
Estilo
Un programa elegante suele ser un buen programa.
Empecemos diciendo que, en general, para realizar una tarea particular se pueden
emplear muchos programas diferentes que den el mismo resultado correcto. Cul es el
ms eficiente?
Hay que ir probando para mejorar la velocidad. Con la prctica -y el estudio- se
descubren las maneras ms rpidas de implementar las instrucciones entre todas las
posibles.
La confeccin de programas se vuelve frecuentemente una tarea rutinaria donde el
orden facilita las cosas.
Repasar un programa una y otra vez, modificando poco a poco el cdigo para depurarlo,
exige una cierta disciplina.
Aunque cada uno tenga sus preferencias, es conveniente desarrollar algunos hbitos.
Hbitos De Programacin
El programa debe resultar de fcil lectura. As, pasado el tiempo, es ms sencillo
revisarlo.
Los nombres de los objetos deben ser identificadores autoexplicativos. Los
nombres abstractos restan claridad al programa.
Introducir comentarios en el programa. Los comentarios son lneas que no se
ejecutan, en las que se escriben aclaraciones explicativas. Para que una lnea no se
ejecute, basta escribir al principio de ella el smbolo %. Un programa con comentarios
es ms fcil de entender.
Suele ser bueno definir las variables al comienzo. Ello evita tener que buscarlas a
lo largo del cdigo para cambiar su valor cuando sea necesario.
Para ver dnde empiezan y dnde acaban los bucles y ramificaciones, es costumbre
indentar (introducir una sangra) en las lneas contenidas en ellos. Eso resulta de
especial ayuda para interpretar las estructuras repetitivas y selectivas.
Pgina 38 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Estructuras Condicionales (Selectivas)
Para implementar el control del flujo, son muy tiles las expresiones relacionales y
lgicas, las cuales arrojan como resultado falso o verdadero.
En un programa, a veces es necesario preguntarse: es x mayor que y?
Pues si x es mayor que y, entonces......., y si no, ...... ;
o bien: caso de que la variable x sea menor que cero, hacer tal cosa.
Una condicin, como se ha indicado, slo admite dos respuestas: verdadero o falso.
As, a la pregunta es x mayor o igual que y?, que en el lenguaje de Matlab se expresa
x>=y, slo caben dos respuestas posibles:
s, verdadero, x es mayor o igual que y
o bien,
no, falso, x no es mayor o igual que y.
En resumen: con las expresiones relacionales y lgicas se pueden realizar preguntas de
respuesta unvoca (verdadero o falso), que permitan luego tomar una decisin.
MATLAB posee un lenguaje de programacin que como cualquier otro lenguaje
dispone de sentencias para realizar Estructuras Condicionales.
Las mismas permiten realizar una u otra operacin segn se cumpla o no una
determinada condicin. La Figura muestra tres posibles formas de bifurcacin.
Pgina 39 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
SENTENCIA if
if condicion
sentencias
end
SENTENCIA if_else
if condicion
bloque1
else
bloque 2
end
SENTENCIA if_elseif
if condicion1
bloque1
elseif condicion2
bloque 2
elseif condicion3
bloque 3
else
bloque 4
end
SENTENCIA switch
Realiza una funcin anloga a un conjunto de if...elseif concatenados.
switch n
case 1, disp('Ud. ingreso 1'),
case 2, disp('Ud. ingreso 2')
case {3,4,5}, disp('Ud. ingreso 3,4 o 5')
otherwise, disp('El nmero es mayor que 5')
end
Al principio se evala el valor del identificador, para nuestro caso n (variable de
control), el cual debe ser un nmero escalar o una cadena de caracteres.
Este valor se compara en las distintas case, y en el caso que se verifique igualdad, se
ejecuta el bloque de sentencias que corresponda con ese resultado.
Si ninguna es igual a n se ejecutan las sentencias correspondientes a otherwise.
Segn puede verse en el ejemplo anterior, es posible agrupar varias condiciones dentro
de unas llaves (constituyendo lo que se llama un cell array o vector de celdas); basta la
igualdad con cualquier elemento del cell array para que se ejecute ese bloque de
sentencias.
Pgina 40 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Estructuras repetitivas (Bucles)
MATLAB posee un lenguaje de programacin que como cualquier otro lenguaje
dispone de sentencias para realizar estructuras repetitivas o cclicas.
Las computadoras estn especialmente diseadas para ejecutar tareas repetidamente.
Las estructuras de control repetitivas o cclicas son aquellas en las que una sentencia o
grupos de sentencias se repiten muchas veces.
Los pasos donde se realiza la sentencia o sentencias que se repiten se identifica como
cuerpo del bucle o cuerpo del ciclo y cada repeticin del cuerpo del bucle se denomina
iteracin.
Tipos de estructuras repetitivas en Matlab:
Sentencia Mientras
Sentencia Para
Los bucles permiten repetir las mismas o anlogas operaciones sobre datos distintos.
Las figuras muestran dos posibles formas de bucle, con el control situado al principio o
al final del mismo.
Si el control est al comienzo de la estructura es posible que las sentencias no se
ejecuten nunca, por no haberse cumplido la condicin cuando se llega al bucle por
primera vez.
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
SENTENCIA while
La estructura repetitiva Mientras (while para Matlab) se emplea cuando el nmero de
repeticiones no se conoce por anticipado y el cuerpo del bucle se repite mientras la
condicin sea cierta. Por esta razn a estos bucles se les denomina bucles
condicionales.Cuando la sentencia while se ejecuta, el primer paso es la evaluacin de
la condicin. Si se evala a falso, ninguna sentencia se realiza y el programa prosigue
en la siguiente sentencia despus del bucle. Si la condicin se evala a verdadera,
entonces se ejecutan las sentencias contenidas dentro del cuerpo del bucle y se evala
de nuevo la condicin.
Seudocdigo
Mientras Condicin
sentencias
fin mientras
Matlab
while Condicin
sentencias
end
Regla: en sta estructura se debe controlar una variable en la condicin y que vare en
cada iteracin. Esa variacin se debe producir en alguna sentencia dentro del bucle.
SENTENCIA for
En numerosas ocasiones se desea un bucle que se ejecute un nmero deseado de
veces, y cuyo nmero de iteraciones se conozca por anticipado.
Para este tipo de aplicaciones se utiliza la sentencia Para (for para Matlab).
La sentencia for requiere que conozcamos por anticipado el nmero de veces (Vf) que
se ejecutan las sentencias del interior del bucle.
Al ejecutarse la sentencia for la primera vez, el valor inicial Vi=1 se asigna a V, que se
denomina variable de control, y a continuacin se ejecuta la sentencia del interior del
bucle. Al llegar al final del bucle se verifica si el valor final Vf es mayor que el valor
inicial; en caso negativo se incrementa el valor de la variable de control en el valor p
(p=paso o incremento, por lo general p=1) y se vuelven a ejecutar todas las sentencias
del interior del bucle, hasta que la variable de control sea mayor que el valor final (Vf),
en cuyo momento se termina el bucle y se sigue con la siguiente sentencia fuera del
mismo.
Seudocdigo
Para V=1:1:Vf
sentencias
fin Para
Matlab
for V=1:1:Vf
sentencias
end
Pgina 42 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Regla: es ilegal intentar modificar el valor de la variable de control, en su valor inicial y
su valor final dentro del bucle.
La siguiente construccin ejecuta sentencias con valores de i de 1 a n, variando de uno
en uno; mostrando el valor de i en cada ciclo.
for i=1:n
i
end
En algunos casos es necesario que la variable de control aumente su valor con
incremento distinto de 1. Por ejemplo:
for cont=1:0.5:10
Sentencias
end
En ste caso cont tomar como valor inicial el valor igual 1 y en cada ciclo se
incrementar 0,5 hasta que cont tome un valor mayor a 10, dando por terminado el
bucle.
Esto nos permite utilizar el valor de la variable de control para intervenir en alguna
expresin dentro del ciclo.
En el siguiente ejemplo se presenta un incremento negativo
for i=n:-0.2:1
i
end
El bucle se ejecuta por primera vez con i=n, y luego i se va reduciendo de 0.2 en 0.2
hasta que llega a ser menor que 1, en cuyo caso el bucle se termina.
Bucles anidados
La variable j es la que vara ms rpidamente (por cada valor de i, j toma todos sus
posibles valores).
m=3
n=m
for i=1:m
i
for j=1:n
j
end
end
SENTENCIA break
Hace que se termine la ejecucin del bucle for y/o while y se contine con el programa
fuera del ciclo.
n=2
for i=1:10
i,a=n^i
if a>20
break
end
end
Pgina 43 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
El bucle comienza con i=1 y luego se muestra el valor de i y de a=n^i y a posterior se
pregunta si a es mayor que 20, mientras no se cumpla esta condicin el bucle se sigue
repitiendo hasta que llegue i=10 o a>20; lo que ocurra primero.
SENTENCIA continue
Hace que se pase inmediatamente a la siguiente iteracin del bucle for o while,
saltando todas las sentencias que hay entre el continue y el fin del bucle en la iteracin
actual.
n=2
for i=1:10
i,a=n^i, continue
if a>20
break
end
end
COMANDOS UTILES DE PROGRAMACIN
%
input
En realidad, disp siempre imprime vectores y/o matrices; las cadenas de caracteres son
un caso particular de vectores.
Pgina 44 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Considrense los siguientes ejemplos de cmo se utiliza:
>> disp('El programa ha terminado')
El programa ha terminado
Obsrvese que el texto que queremos que nos muestre Matlab, se encierra entre
apstrofes simples.
Ejectense las dos siguientes sentencias en MATLAB y obsrvese la diferencia entre las
dos formas de imprimir la matriz A.
>> A=rand(4,4)
>> disp(A)
0.9355
0.9169
0.4103
0.8936
0.0579
0.3529
0.8132
0.0099
0.1389
0.2028
0.1987
0.6038
0.2722
0.1988
0.0153
0.7468
fprintf
Ejemplo
>> R=8.7509
R=
8.7509
>> V=220.589
V=
220.5890
Pgina 45 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
>> fprintf('El valor es R =%6.2f ohm y V = %5.1f Voltios\n',R,V)
El valor es R = 8.75 ohm y la cada V = 220.6 Voltios
Desglosando cada parte tenemos:
(....):
6.2 y 5.1:
\n
R,V:
Pgina 46 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Ejemplo de programacin
Considerando un caso donde queremos disear un programa para calcular el salario
semanal de un empleado que trabaja por horas, la empresa paga una tasa de 1,5 veces
el valor de la hora normal por todas las horas trabajadas mayores a 40, crearemos el
fichero de comandos (scripts) en Matlab.
Pgina 47 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
y se nos abrir el editor de Matlab para comenzar a escribir el programa en el rengln 1.
Una vez escrito el programa debemos guardar el mismo en la carpeta work del
directorio Matlab, dndole un nombre al archivo con extensin .m
Para ejecutar el programa desde el workspace se teclea el nombre del archivo y luego
enter, comenzando de esa manera la ejecucin del programa creado.
Pgina 48 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
FUNCIONES (FUNCTION) EN MATLAB
En general una funcin en los lenguajes de programacin es un conjunto de
instrucciones que se escriben separadamente del programa y que realizan alguna tarea
especificada.
Si un fichero de comandos (SCRIPTS) de Matlab realiza acciones concretas sobre
variables de entrada para generar variables de salida, es mejor convertirlo en una
funcin de Matlab.
De esta forma, el resto de las variables que se utilicen en la funcin sern variables
locales, con lo que no alterarn el contenido de las variables definidas en el entorno de
comandos de Matlab. Por supuesto, las funciones pueden llamarse tambin desde otros
ficheros de comandos o funciones de Matlab.
Los usuarios pueden definir funciones y agregarlas a las funciones propias de MATLAB.
El mecanismo usual para trasmitir datos a las funciones es mediante una lista de
variables que se denominan parmetros.
Sin embargo, a diferencia de los programas, las variables que se usan dentro de una
funcin, no estn disponibles fuera de ella, a menos que se use una declaracin
explcita y que se ver mas adelante.
Declaracin de una funcin
function [variable] = nombre (parmetros)
instrucciones
donde:
variable: contendr el resultado que entrega la funcin
parmetros: son variable que reciben los datos que entran a la funcin
nombre: identifica a la funcin
instrucciones: se incluyen en la funcin segn la tarea especificada
Las funciones se escriben en la ventana de edicin de Matlab y se las almacena en
alguna carpeta. Es conveniente que el nombre asignado sea igual al nombre usado en
la declaracin de la funcin. El uso de una funcin es similar al uso de las funciones
comunes de MATLAB. El nombre debe coincidir con el nombre asignado, aunque los
parmetros pueden tener nombres diferentes, pero su uso debe ser coherente.
Ejemplo. Escriba una funcin para elegir el mayor entre dos nmeros
Abra un documento nuevo en la ventana de edicin y escriba:
function [m] = mayor(a, b)
if a>b
m = a;
else
m = b;
end
Pgina 49 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
donde:
m
mayor
a, b
Pgina 50 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Escriba en una nueva ventana de edicin un programa que use la funcin primo para
encontrar todos los nmeros primos menores a 20:
for x = 1: 20
if primo(x) ==1
disp(x);
end
end
Almacene su programa en el disco con el nombre prueba
En la ventana de comandos pruebe su programa:
>> prueba
1 (resultados mostrados por MATLAB)
2
3
5
7
11
13
17
19
Una funcin puede entregar ms de un resultado
Las variables que entregan los resultados deben definirse entre [ ]
Ej. Escriba una funcin que entregue el rea y el volumen de un cilindro dados su radio
(r) y su altura (h)
function[area, vol] = cilindro(r, h)
area = 2*pi*r*h + 2*pi*r^2;
vol = pi*r^2*h;
Escriba y almacene la funcin con el nombre cilindro. Use la funcin para calcular el
rea y el volumen de una lata cilndrica que tiene un dimetro de 10cm y una altura de
12cm
Escriba en la ventana de comandos:
>> r = 5;
>> h = 12;
>> [a, v] = cilindro(r,h);
>> a
>> v
MATLAB mostrar los resultados almacenados en a y en v
Pgina 51 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Las variables definidas dentro de una funcin son locales, es decir que a
diferencia de los programas, no son visibles fuera de la funcin
Ej. Escriba la funcin:
function [x]=fn(a, b)
c = a + b;
x = 2*c;
Almacene con el nombre fn y sela desde la ventana de comandos:
>> a = 3;
>> b = 5;
>> t = fn(a, b)
t = 16 (resultado que muestra MATLAB)
>> c
(intentamos conocer el valor de c en la funcin)
??? Undefined function or variable 'c'. (mensaje de error de MATLAB)
Compare con lo que ocurre si escribe un programa en vez de la funcin;
a = input(ingrese dato );
b = input(ingrese dato );
c = a + b;
x = 2*c;
disp(x);
Guarde el programa con el nombre prueba y ejectelo:
>> prueba
ingrese dato 3
(interaccin para ingreso de datos)
ingrese dato 5
16
(resultado que muestra MATLAB)
>> c
c=8
(la variable c puede ser utilizada)
Es posible hacer que las variables de una funcin sean visibles fuera de su mbito,
mediante la declaracin global
Ej. Modifique la funcin fn para que la variable c sea visible:
function [x]=fn(a, b)
global c;
c = a + b;
x = 2*c;
Almacene con el nombre fn y use la funcin:
>> a = 3;
>> b = 5;
>> t = fn(a, b)
t = 16
(resultado que muestra MATLAB)
>> c
(intentamos conocer el valor de c en la funcin)
c=8
(la variable c est disponible ahora)
Pgina 52 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Una funcin puede no necesitar parmetros
Ej. Escriba una funcin que lea y valide un entero entre 1 y 5
function [n]=entero
x=0;
while x==0
n=input(ingrese un entero entre 1 y 5 );
if n>0 & n<6
x=1;
end
end
Una funcin puede no entregar resultados ni usar parmetros
Ej. Escriba una funcin que imprima un men
function menu
disp(1) ingresar);
disp(2) borrar);
disp(3) salir);
para usar esta funcin escriba
>> menu
Una funcin puede recibir como parmetros vectores o matrices.
Ej. Escriba una funcin que reciba un vector y entregue el promedio del valor de sus
elementos.
function [p]=prom(x)
n=length(x);
s=0;
for i=1:n
s=s+x(i);
end
p=s/n;
Para usar esta funcin debe definir el vector antes de llamar a la funcin. La funcin
determina la longitud del vector con la funcin length
>> x=[2 7 3 5 4 7 6];
>> t=prom(x)
t = 4.8571
Pgina 53 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Para usar esta funcin debe enviar un valor para el parmetro n:
>> t=dados(5)
t=63432
(es el vector resultante que entrega MATLAB)
Una funcin puede recibir y entregar vectores o matrices
Ej. Escriba una funcin que reciba dos vectores A, B y entregue un tercer vector que
contenga los elementos que estn en ambos vectores:
function [C]=interseccion(A,B)
n=length(A);
m=length(B);
k=1;
for i=1:n
for j=1:m
if A(i) == B(j)
C(k) = A(i);
k = k + 1;
end
end
end
Para usar esta funcin debe definir los vectores que entran. Recuerde que pueden tener
nombres diferentes a los que usa la funcin:
>> A=[2 7 5 4 3 8];
>> B=[7 1 3 9 0];
>> C=interseccion(A,B)
C=73
(Es el vector resultante que entrega MATLAB)
Pgina 54 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
INTERACCIN CON EXCEL (para versin Matlab R2007b)
MATLAB puede intercambiar datos con otros programas de Windows.
El siguiente ejercicio muestra la relacin con EXCEL.
Ejemplo. Crear un fichero Excel sencillo como el de la figura siguiente (Libro1.xls) y
guardarlo en el directorio de trabajo de MATLAB, <work>.
Pgina 55 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Donde en la ventana izquierda tenemos la posibilidad de elegir el vector zipi o zape,
creados desde Libro1.xls, haciendo click sobre el nombre del vector.(en la figura se
eligi zipi)
Pgina 56 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Pgina 57 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
SIMULINK Y SIMPOWERSYSTEMS
OBJETIVOS.
Conocer una de las aplicaciones informticas que permiten modelar, simular y analizar
sistemas elctricos.
CONCEPTOS ACLARATORIOS
MODELAR
Modelar es una representacin simplificada (modelo) de un Sistema que permite
responder interrogantes sobre este ltimo sin recurrir a la experimentacin sobre dicho
sistema.
Modelos Estticos y Dinmicos: Los modelo estticos no toman en cuenta la variacin
del tiempo en cuanto que los modelos dinmicos si.
Una forma de clasificar modelos es en funcin de la manera en que las variables
evolucionan en el tiempo.
Tiempo Continuo: Las variables evolucionan continuamente en el tiempo. Generalmente
se representan mediante ecuaciones diferenciales.
Tiempo Discreto: Las variables slo pueden cambiar en determinados instantes de
tiempo. Se suelen representar mediante ecuaciones en diferencias.
SIMULAR
Simular es la accin de fingir o imitar el comportamiento de un modelo, generalmente
implementado en una computadora con el objetivo de la reproduccin del
comportamiento real de un sistema para su analisis.
La simulacin de un sistema, adems del modelado, suele requerir la utilizacin de
tcnicas de aproximacin (mtodos numricos de integracin, por ejemplo).
ANALIZAR
Analizar es distinguir y separar las partes de un todo hasta llegar a conocer sus
principios o elementos.
Pgina 58 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
SIMULINK (para versin Matlab R2013a)
SIMULINK es una herramienta de MATLAB para modelar, simular y analizar sistemas
dinmicos, basada en el uso de diagramas de bloques. (Un sistema dinmico es un
sistema fsico cuyo estado de funcionamiento evoluciona con el tiempo).
Atributos
Funciona sobre MATLAB, es decir, para iniciar SIMULINK es necesario entrar antes
en MATLAB. Ambos programas estn desarrollados y comercializados por The
MathWorks, Inc.
Tiene dos fases de uso: la definicin del modelo y el anlisis del modelo.
1. La definicin del modelo, donde se construye el modelo a partir de elementos
bsicos construidos previamente, tal como integradores, bloques de ganancia,
etc..
2. El anlisis del modelo, donde se realiza la simulacin, linealizacin y
determinacin del punto de equilibrio de un modelo previamente definido..
Posee
una interfaz de usuario grfica (GUI), con diagramas de bloques para construir los
modelos utilizando operaciones con el ratn del tipo pulsar y arrastrar.
Permite
simular cualquier sistema que pueda ser definido por ecuaciones diferenciales
continuas y ecuaciones diferenciales discretas, lo que permite modelar sistemas
continuos en el tiempo, discretos en el tiempo o sistemas hbridos
Pgina 59 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Arrancar Simulink
Para acceder a SIMULINK podemos simplemente teclear en la lnea de comandos de
MATLAB,
>>simulink
o tambin podemos acceder a travs del icono de acceso directo situado en la barra de
herramientas:
Una vez que hemos accedido a SIMULINK desde MATLAB nos encontramos una
ventana con la librera principal de bloques:
Pgina 60 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Bloques propios de Simulink
Simulink dispone de numerosos bloques ya implementados, que ejecutan las funciones
de modelizacin ms usuales. Los bloques estn agrupados de acuerdo con su
comportamiento: fuentes, sumideros, discreto, continuo, no lineal, matemtica, etc.
Simulink, adems de los bloques propios de la librera simulink, posee un conjunto de
blocksets (juego de bloques) especficos entre los cuales est SimPowerSystems, que
contiene bloques que permiten modelar sistemas de energa elctrica.
Simulink distingue entre las seales de los bloques propios de la librera simulink y las
seales de la librera SimPowerSystems, y no permite conectar un bloque de la librera
simulink a otro de SimPowerSystems a menos que dicho bloque tenga una entrada
apropiada.
Librera Simulink
Todos los componentes bsicos de Simulink, se pueden encontrar en su biblioteca de
componentes.
Pgina 61 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Scope
XY Graph
Display
Stop Simulation
Continua (Continuous)
Integrator
Derivative
State-Space
Transfer Fcn
Zero-Pole
Transport Delay
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Relay
Saturation
Pgina 63 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Se trata un sistema en que un bloque proporciona una onda senoidal, que es integrada.
El bloque Mux forma una seal vectorizada (uniendo las dos seales) que
visualizaremos en el bloque Scope.
Para construir el modelo, comenzaremos por situar los bloques que lo forman. Los
bloques del sistema los encontramos en las siguientes libreras:
Bloque
Sine Wave (Onda senoidal)
Integrador
Mux (Multiplexor)
Scope (Osciloscopio)
Librera
Sources
Commonly Used Blocks
Commonly Used Blocks
Sinks
donde encontramos
Pgina 64 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Solo tenemos que cambiar el nmero de entradas de 2 al valor que se quiera, y aplicar
los cambios. Este es el mtodo que se usa para cambiar los parmetros de cualquier
bloque.
Adems del multiplexor, debemos definir los valores del bloque onda senoidal. Si
hacemos doble click con el ratn en el bloque Sin Wave, nos aparece el siguiente
cuadro de dilogo:
Vemos que los parmetros que hay que definir son la amplitud, la frecuencia, la fase y el
tiempo de muestreo. El valor de la amplitud de la onda lo fijamos a 1, al igual que su
frecuencia. A la fase y al tiempo de muestreo le damos un valor de cero. Aplicamos los
cambios y cerramos el cuadro de dilogo. Para los dems bloques del modelo, no es
necesario definir ningn parmetro.
Pgina 65 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Conexiones entre bloques
Ahora que ya tenemos los bloques situados, ha llegado el momento de conectarlos.
Vamos a empezar conectando la salida del bloque de Onda Senoidal a la primera
entrada del multiplexor. Si situamos el cursor encima de la salida de la onda senoidal
podemos observar que el cursor del ratn pasa de ser la tpica flecha a convertirse en
una cruz. As es como SIMULINK indica que vamos a realizar una conexin.
Cuando nos aparezca este smbolo presionamos el botn izquierdo del ratn y lo
arrastramos hasta el puerto de entrada del multiplexor. Veremos como va apareciendo
la lnea de conexin, y cuando nos situemos sobre el smbolo de entrada > el puntero
volver a cambiar de aspecto, y ahora aparecer un tringulo slido, para indicar que
podemos terminar la conexin. Si soltamos el botn del ratn observamos que el
extremo de la conexin que acabamos de realizar cambia para convertirse en una
flecha.
Podemos hacer lneas que partan de otras lneas y lleven su misma informacin, pero
no podemos insertar el contenido una lnea en otra lnea.
Para hacer que una lnea parta de otra lnea lo hacemos de la misma forma que si una
lnea parte de un bloque, pero mientras picamos con el ratn en la lnea debemos tener
presionada la tecla CTRL. Si nos olvidamos de presionarla, lo que haremos ser mover
la lnea y arrastrarla.
Para completar las conexiones, unimos la salida del integrador a la entrada libre del
multiplexor.
Pgina 66 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Seales Vectoriales
Antes hemos hecho referencia a que la conexin entre el multiplexor y el bloque Scope
era una seal vectorial. Una seal vectorial es la unin de varias seales. La lnea de
conexin entre el multiplexor y el osciloscopio tiene que llevar las dos seales al mismo
tiempo: la onda senoidal de la que partimos, y la integracin de sta. Del multiplexor
slo parte una lnea, pero en el osciloscopio vemos representadas las dos. La mayora
de los bloques de SIMULINK aceptan por igual las seales escalares y vectoriales. La
representacin de las lneas de conexin escalares y vectoriales es idntica. Para saber
si una seal es escalar o vectorial vamos al men Display, Signals & Ports y marcamos
la opcin Wide Nonscalar Lines (mostrar lneas vectoriales):
Vemos como el sistema nos muestra las lneas vectoriales con un trazo ms ancho.
Aadir Etiquetas al sistema
Se pueden escribir anotaciones en cualquier parte del diagrama de bloques. Para
escribir una anotacin slo hay que hacer doble click con el ratn en el lugar donde
queramos que aparezca. Aparecer un pequeo rectngulo y el cursor se transformar
en una barra vertical. Podemos escribir varias lneas presionando la tecla ENTER.
Cada lnea que escribamos es automticamente centrada en el rectngulo de escritura.
Para terminar la anotacin, picamos con el ratn en cualquier otra parte de la ventana.
Podemos, por ejemplo, ponerle un ttulo Primer Ejemplo a nuestro diagrama de
bloques.
Pgina 67 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Las etiquetas podemos moverlas a cualquier parte del dibujo arrastrndolas con el ratn.
Para cambiar el tipo y tamao de la letra, seleccionamos la anotacin y en el men
"Format Font" hacemos los cambio necesarios.
Etiquetas de lnea
Podemos aadir etiquetas a las lneas del diagrama para hacerlo ms comprensible.
Para ello hacemos doble click sobre la lnea que queramos e insertamos el comentario.
Visualizar seales
Simulink dispone de varios bloques distintos para la visualizacin de seales. Entre ellos
en Sinks estn los bloques Scope, XYGraph y Display. Nosotros utilizaremos para este
ejemplo el bloque Scope:
En nuestro ejemplo, las seales de salida que obtendremos son las siguientes:
Pgina 68 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
En color rosa podemos ver la seal que genera el bloque integrador, mientras que en
color amarillo vemos la onda senoidal de la que partimos.
En la barra de botones:
Con el botn
podemos ajustar la escala del visualizador de forma automtica.
Adems, pulsando el botn izquierdo del ratn y moviendolo sobre la grfica podemos
ampliar la zona a estudiar describiendo en su movimiento un rectngulo y soltando nos
amplia dicha zona.
Con los botones
actuaremos igual, pero se modificarn las escalas del eje X
(botn izquierdo) o del eje Y (botn derecho).
Con el botn
accedemos al men
Pgina 69 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
en el que podemos cambiar los parmetros de la grfica como nmero de seales de
entrada (Number of axes), el tiempo de muestra en la grfica (Time range en segundos),
valores en los ejes (Tick labels), como as tambin la muestra de los ltimos puntos
calculados (History) y formato de fondos y lneas de la grfica (Style).
Guardar un modelo
Para guardar un modelo vamos al men File Save , si el modelo ya tiene un nombre
asignado, o File Save As..., cuando es la primera vez que vamos a guardarlo. El
modelo se guardar con extensin .mdl .
Imprimir un modelo
Podemos imprimir un diagrama de bloques seleccionando en el men File Print o
introduciendo la orden print en la lnea de rdenes de MATLAB.
Si elegimos File Print, se imprime el diagrama de bloques del sistema. Entre las
opciones de impresin podemos elegir imprimir slo el sistema o subsistema actual,
imprimir el actual y de nivel superior, el nivel inferior... No se imprime ninguno de los
bloques Scope que est abierto.
No se puede controlar el tamao del sistema cuando el modelo a imprimir se enva
directamente a la impresora. Si el diagrama es mayor que el tamao de pgina,
SIMULINK lo reduce para que entre en la pgina. Para controlar el tamao del modelo
que queremos imprimir, tenemos que hacerlo a travs de un archivo eps, o capturando
pantallas en forma de bitmaps y manipulando posteriormente su tamao mediante un
programa de procesamiento de imgenes.
PARMETROS DE SIMULACIN
Podemos simular un sistema de dos formas: mediante el men de Simulink, o
introduciendo rdenes desde la lnea de comandos de MATLAB. Si lo hacemos de una
u otra forma, encontramos las siguientes diferencias:
Desde Matlab:
- Se pueden modificar las condiciones iniciales de los bloques
- Se genera automticamente una grfica de las salidas o de las trayectorias de estado,
si no indicamos lo contrario.
- Se pueden especificar entradas externas (utilizando el parmetro ut).
- Se puede ejecutar una simulacin desde un fichero-M, permitiendo que los parmetros
en los bloques se cambien iterativamente.
- La simulacin se ejecuta ms rpido
Desde Simulink:
- Mientras se ejecuta la simulacin, se pueden cambiar los parmetros de un bloque o
cualquier parmetro de simulacin, mtodo de simulacin, podemos ver la seal que
transporta cada lnea, etc...
Simulacin de un modelo desde SIMULINK
Si escogemos en el men de Simulation Model Configuration Parameters nos
aparece un cuadro de dilogo.
Pgina 70 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Dentro de este cuadro nos encontramos con varias opciones. En ste tutorial
describiremos la primera opcin Solver, la cual se ocupa de todo lo que se refiere al
mtodo de resolucin y la opcin Diagnostics la cual nos permite seleccionar el nivel
de los mensajes de advertencia mostrados durante la simulacin.
Opcin Solver
La opcin Solver nos permite modificar entre otros los siguientes parmetros: tiempo de
simulacin, mtodo de integracin, tamao de pasos mximo y mnimo, mrgenes de
error (tolerancia relativa y absoluta), etc:
Tiempo de simulacin:
Los parmetros Start time y Stop time especifican los valores de tiempo en los que la
simulacin comienza y termina. Por defecto, el tiempo inicial es de 0 sg y el tiempo final
de 10 sg, El tiempo de simulacin no es tiempo real, es decir, el verdadero tiempo
empleado en una simulacin no es la diferencia entre el tiempo de inicio y de
finalizacin, sino que depender de la complejidad del modelo, de los tamaos de paso
mnimo y mximo, y del ordenador con el que realicemos la simulacin.
Mtodo de integracin (Solver Options):
Es el mtodo matemtico que utiliza SIMULINK para realizar la simulacin de modelos.
Se hace a travs de modificaciones de ecuaciones diferenciales ordinarias (ODEs).
Debido al comportamiento de los distintos sistemas dinmicos, algunos mtodos pueden
ser ms eficientes que otros, segn el sistema de que se trate.
Podemos elegir entre mtodos de paso variable (Variable-step) o de paso fijo (Fixedstep). Los mtodos de paso variable permiten modificar el tamao del paso durante la
simulacin, mientras que los de paso fijo mantienen el mismo paso durante toda la
simulacin.
El paso es el tiempo o perodo cada cuanto se realiza la resolucin matemtica del
modelo.
Entre los mtodos de paso variable podemos usar:
discrete: Es el mtodo que usa SIMULINK cuando detecta que el modelo no tiene
estados continuos.
ode45: Para ecuaciones no demasiado complejas. Es un mtodo de un solo paso, es
decir, para averiguar un punto slo se basa en el calculado anteriormente. En general,
es el mtodo ms apropiado para solucionar la mayora de los problemas. Est basado
en el mtodo de Runge-Kutta.
Pgina 71 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
ode23: Para ecuaciones no demasiado complejas. Es un mtodo de un solo paso.
Est basado en el mtodo de Runge-Kutta. Es ms rpido pero menos preciso que el
ode45.
ode113: Para ecuaciones no demasiado complejas. Es un mtodo multipaso, es decir,
necesita conocer varios puntos anteriores para calcular la solucin. Este es el mtodo
variable de Adams-Bachforth-Moulton.
ode15s: Para ecuaciones complejas. Como el mtodo ode113, es un mtodo de
varios pasos. Se utiliza cuando el mtodo ode45 no es lo suficientemente eficaz.
ode23s: Para ecuaciones complejas. Es un mtodo de un solo paso, basado en la
frmula modificada de Rosenbrock de orden 2, por lo que puede ser ms eficaz que el
mtodo ode15s para tolerancias no muy exigentes.
ode23t: Para ecuaciones de dificultad media, basado en el mtodo de regla
trapezoidal. Es muy buena alternativa para la resolucin de circuitos elctricos.
Entre los mtodos de paso fijo podemos usar:
discrete: Es un mtodo de paso fijo que funciona sin integrar. Esta indicado para
modelos sin estados continuos.
ode5: Es la versin de paso fijo del mtodo ode45 (frmula de Dormand-Prince).
ode4: Es la frmula de Runge-Kutta de orden 4.
ode3: Es la versin de paso fijo del mtodo ode23 (frmula de Bogacki-Shampine).
ode2: Es el mtodo de Heun, tambin conocido como frmula mejorada de Euler.
ode1: Mtodo de Euler.
Tamaos de paso
En los sistemas de paso variable podemos fijar el tamao de paso mximo y sugerir el
tamao de paso mnimo. En los sistemas de paso fijo, podemos fijar el tamao de paso.
Paso mximo (Max Step Size): Es el mayor tiempo de paso que utiliza el mtodo de
resolucin. Por defecto, viene determinado por los tiempos de inicio y de finalizacin
Generalmente, el valor del paso mximo que SIMULINK toma por defecto es suficiente,
salvo que conozcamos con detalle el comportamiento del sistema.
Paso mnimo (Min Step Size): Por defecto, el mtodo de resolucin fija el tamao de
paso inicial en relacin con el tiempo de inicio de la simulacin. Si nosotros fijamos el
tamao de paso mnimo, pero no se cumple el error mnimo, SIMULINK reduce el
tamao de paso mnimo.
Margen de error: Podemos controlar en la simulacin el error en cada estado. Esto de
mide en la tolerancia relativa y absoluta.
Tolerancia relativa (Relative tolerance): Mide el error relativo de cada estado. La
tolerancia relativa representa un porcentaje del valor de cada estado. Por defecto, la
tolerancia relativa est establecida en 1e-3 . Esto significa que el valor tendr una
exactitud del 0.1%.
Tolerancia absoluta (Absolute tolerance): Es el valor del umbral de error. Representa
como error aceptable el valor de la medida del estado ms prximo a cero.
Pgina 72 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Opcin Diagnostics
Pgina 73 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Que la tolerancia absoluta sea demasiado pequea. Normalmente, la tolerancia
por defecto suele ser suficiente.
Que el tiempo de simulacin sea demasiado grande. Prueba a reducirlo.
Que el sistema sea un sistema "stiff" y no estemos usando un mtodo
adecuado. Prueba a usar el mtodo ode15s.
Que el modelo use tiempos de muestreo que no sean mltiplos de los otros.
Esto provoca que se tomen pasos muy pequeos para poder cumplir el tiempo de
muestreo.
Que el modelo contenga lazos algebraicos. Las soluciones a estos lazos son
calculadas iterativamente en cada paso. Por eso, empeora mucho la ejecucin de la
simulacin.
Que el modelo alimente bloques Random Number de un Integrador. Para
sistemas continuos, es mejor usar bloques Band-Limited White Noise block (ruido
blando limitado en banda), de la librera de fuentes.
USO DE MSCARAS PARA PERSONALIZAR BLOQUES
Introduccin
El enmascaramiento es una poderosa herramienta de Simulink que permite personalizar
el cuadro de dilogo y el icono de un subsistema. Con el enmascaramiento
conseguimos:
Usar una interfaz ms fcil y descriptiva, ya que incluimos nuestra propia definicin
del sistema, texto de ayuda, e incluso podemos usar nuestras propias etiquetas de
campo.
Usar los valores de los parmetros de los bloques para definir nuevas variables.
Pgina 74 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Una vez creado el modelo, para crear el subsistema seleccionamos con el ratn todos
los bloques del modelo, y en el men Diagram seleccionamos la opcin Subsystem &
Model Reference y luego Create Subsystem from Selection:
Vemos que el subsistema se representa como un bloque en el que solo vemos las
entradas y las salidas:
Si queremos ver otra vez el contenido del subsistema y acceder a sus bloques, hacemos
doble click con el ratn sobre el bloque Subsystem y vemos lo que hay en su interior:
Pgina 75 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
FUNCIONES S
Qu es una funcin S?
Una Funcin S es una descripcin de un sistema dinmico. Las Funciones S
pueden escribirse en lenguaje MATLAB o C. Las escritas en lenguaje MATLAB son
compiladas como archivos MEX, y al igual que otros archivos MEX son enlazados
dinmicamente dentro de MATLAB cuando se necesita.
La forma de una Funcin S es muy general, y puede ajustarse a sistemas continuos,
discretos o hbridos. De hecho, casi todos los modelos Simulink pueden escribirse como
una Funcin S.
Si existe una Funcin S escrita en forma de archivo MEX (lenguaje C), y otra con el
mismo nombre escrita en forma de archivo M, tiene preferencia el archivo C MEX, y es
el que se ejecuta cuando llamemos a la funcin.
Para insertar una Funcin S en un modelo de Simulink, disponemos del bloque SFunction, que se encuentra en la librera User-Defined Functions
.
El cuadro de dilogo de una Funcin S es el siguiente:
Pgina 76 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Cuando se usa una Funcin S?
Para lo que ms se usan la Funciones S es para crear bloques de Simulink
personalizados por el usuario. Entre las aplicaciones de las Funciones S se encuentran:
Pgina 77 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
SIMPOWERSYSTEMS
Introduccin
Como habamos visto Matlab es un entorno de programacin de alto nivel que combina
el clculo numrico y grficos avanzados. Una de las caractersticas que ms ha
contribuido a la difusin de Matlab es la posibilidad de simular casi cualquier sistema en
un entorno grfico. Este entorno completamente integrado en Matlab, se denomina
Simulink. La gran cantidad de libreras de elementos que posee Simulink facilita el
desarrollo y simulacin de sistemas de ndole diversa: mecnicos, elctricos, hidrulicos,
digitales, redes neuronales, aeroespaciales, etc.
Como vimos, para acceder a Simulink es necesario ejecutar en primer lugar Matlab. Una
vez arrancado este aparece una ventana donde pulsando sobre el icono
correspondiente se accede al entorno de Simulink cuya ventana inicial muestra la lista
de libreras disponibles. Entre ellas el Simscape y en su interior el SimPowerSystems.
SimPowerSystems es una herramienta que se utiliza dentro del ambiente de Simulink
para la construccin de modelos y la simulacin de sistemas elctricos de potencia.
En SimPowerSystems se pueden realizar simulaciones con los mtodos convencionales
(en tiempo continuo y en tiempo discreto) o con el mtodo de simulacin fasorial, que es
ms rpido pero se debe utilizar tomando en cuenta sus ventajas y sus limitaciones.
Pgina 78 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
En la ventana Simulink library browser se encuentran entre otros los siguientes mens:
- Nuevo, permite crear la ventana de edicin del sistema a simular.
- SimPowerSystems>>Electrical Sources, tiene distintos fuentes de tensin y
corriente: 3-phase programmable voltage source, 3-phase source, AC current
source, AC voltage source, controlled current source, controlled voltage source, dc
voltage source
- SimPowerSystems>>Elements, tiene varios elementos pasivos: 3-phase parallel
RLC load, 3-phase series RLC branch, parallel RLC branch", parallel RLC load",
series RLC branch", series RLC load", etc.
Pgina 79 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Una vez dispuestos los elementos, es necesario realizar las conexiones entre ellos. Las
uniones entre dos elementos se realizan pinchando en un terminal de uno de los
elementos. Manteniendo pulsado el botn del ratn y desplazndolo, se iniciar una
lnea que podremos finalizar al soltar el botn del ratn en el terminal del otro elemento.
Un instante de este proceso se muestra en la Figura 4.
Concluido el proceso de conexionado se procede a la asignacin de valores a los
elementos. Haciendo doble clic sobre ellos se despliega una ventana donde aparecen
las caractersticas asociadas a cada elemento. Aunque las propiedades son distintas
para cada tipo, la mayora son bastante intuitivas y su significado se puede deducir
fcilmente.
Pgina 80 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Pgina 81 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Pgina 83 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
3. Cambiar el valor de la capacidad de C2 a 5mF y observar el nuevo reparto de carga
entre los condensadores.
4. Con C2 de nuevo a 1mF, modificar las condiciones iniciales del condensador 2,
asignndole 25 V a su tensin. Tras realizar la simulacin bajo estas condiciones,
comprobar de nuevo el principio de conservacin de carga.
5. Modificar los parmetros del interruptor K1 para que slo se cierre en t=0 y no se
abra en ningn momento. Visualizar la nueva evolucin de las variables del circuito.
Actividad 3. Circuito de segundo orden
Los circuitos de segundo orden presentan diferentes tipos de respuestas segn el
amortiguamiento que posean, como se pondr de manifiesto en este apartado mediante
la simulacin del siguiente circuito.
Pgina 84 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
SIMULINK (para versin Matlab R2007b)
SIMULINK es una herramienta de MATLAB para modelar, simular y analizar sistemas
dinmicos, basada en el uso de diagramas de bloques. (Un sistema dinmico es un
sistema fsico cuyo estado de funcionamiento evoluciona con el tiempo).
Atributos
Funciona sobre MATLAB, es decir, para iniciar SIMULINK es necesario entrar antes
en MATLAB. Ambos programas estn desarrollados y comercializados por The
MathWorks, Inc.
Tiene dos fases de uso: la definicin del modelo y el anlisis del modelo.
3. La definicin del modelo, donde se construye el modelo a partir de elementos
bsicos construidos previamente, tal como integradores, bloques de ganancia,
etc..
4. El anlisis del modelo, donde se realiza la simulacin, linealizacin y
determinacin del punto de equilibrio de un modelo previamente definido..
Posee
una interfaz de usuario grfica (GUI), con diagramas de bloques para construir los
modelos utilizando operaciones con el ratn del tipo pulsar y arrastrar.
Permite
simular cualquier sistema que pueda ser definido por ecuaciones diferenciales
continuas y ecuaciones diferenciales discretas, lo que permite modelar sistemas
continuos en el tiempo, discretos en el tiempo o sistemas hbridos
Pgina 85 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Arrancar Simulink
Para acceder a SIMULINK podemos simplemente teclear en la lnea de comandos de
MATLAB,
>>simulink
o tambin podemos acceder a travs del icono
barra de herramientas:
Una vez que hemos accedido a SIMULINK desde MATLAB nos encontramos una
ventana con la librera principal de bloques:
Pgina 86 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Simulink, adems de los bloques propios de la librera simulink, posee un conjunto de
blocksets (juego de bloques) especficos entre los cuales est SimPowerSystems, que
contiene bloques que permiten modelar sistemas de energa elctrica.
Simulink distingue entre las seales de los bloques propios de la librera simulink y las
seales de la librera SimPowerSystems, y no permite conectar un bloque de la librera
simulink a otro de SimPowerSystems a menos que dicho bloque tenga una entrada
apropiada.
Librera Simulink
Todos los componentes bsicos de Simulink, se pueden encontrar en su biblioteca de
componentes.
Pgina 87 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Continua (Continuous)
Integrator
Derivative
State-Space
Transfer Fcn
Zero-Pole
Transport Delay
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Saturation
Pgina 89 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Se trata un sistema en que un bloque proporciona una onda senoidal, que es integrada.
El bloque Mux forma una seal vectorizada (uniendo las dos seales) que
visualizaremos en el bloque Scope.
Para construir el modelo, comenzaremos por situar los bloques que lo forman. Los
bloques del sistema los encontramos en las siguientes libreras:
Bloque
Sine Wave (Onda senoidal)
Integrador
Mux (Multiplexor)
Scope (Osciloscopio)
Librera
Sources
Commonly Used Blocks
Commonly Used Blocks
Sinks
donde encontramos
Pgina 90 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Parmetros de bloques
Para parametrizar los bloques nos situamos con el ratn sobre el bloque y hacemos
doble click.
Para modificar el nmero de entradas en el bloque multiplexor situamos el ratn sobre el
bloque y hacemos doble click. Nos aparecer el cuadro de dilogo siguiente:
Solo tenemos que cambiar el nmero de entradas de 2 al valor que se quiera, y aplicar
los cambios. Este es el mtodo que se usa para cambiar los parmetros de cualquier
bloque.
Adems del multiplexor, debemos definir los valores del bloque onda senoidal. Si
hacemos doble click con el ratn en el bloque Sin Wave, nos aparece el siguiente
cuadro de dilogo:
Vemos que los parmetros que hay que definir son la amplitud, la frecuencia, la fase y el
tiempo de muestreo. El valor de la amplitud de la onda lo fijamos a 1, al igual que su
frecuencia. A la fase y al tiempo de muestreo le damos un valor de cero. Aplicamos los
cambios y cerramos el cuadro de dilogo. Para los dems bloques del modelo, no es
necesario definir ningn parmetro.
Pgina 91 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Conexiones entre bloques
Ahora que ya tenemos los bloques situados, ha llegado el momento de conectarlos.
Vamos a empezar conectando la salida del bloque de Onda Senoidal a la primera
entrada del multiplexor. Si situamos el cursor encima de la salida de la onda senoidal
podemos observar que el cursor del ratn pasa de ser la tpica flecha a convertirse en
una cruz. As es como SIMULINK indica que vamos a realizar una conexin.
Cuando nos aparezca este smbolo presionamos el botn izquierdo del ratn y lo
arrastramos hasta el puerto de entrada del multiplexor. Veremos como va apareciendo
la lnea de conexin, y cuando nos situemos sobre el smbolo de entrada el puntero
volver a cambiar de aspecto, y ahora aparecer como una cruz doble, para indicar que
podemos terminar la conexin. Si soltamos el botn del ratn observamos que el
extremo de la conexin que acabamos de realizar cambia para convertirse en una
flecha.
Podemos hacer lneas que partan de otras lneas y lleven su misma informacin, pero
no podemos insertar el contenido una lnea en otra lnea.
Para hacer que una lnea parta de otra lnea lo hacemos de la misma forma que si una
lnea parte de un bloque, pero mientras picamos con el ratn en la lnea debemos tener
presionada la tecla CTRL. Si nos olvidamos de presionarla, lo que haremos ser mover
la lnea y arrastrarla.
Para completar las conexiones, unimos la salida del integrador a la entrada libre del
multiplexor.
Pgina 92 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Seales Vectoriales
Antes hemos hecho referencia a que la conexin entre el multiplexor y el bloque Scope
era una seal vectorial. Una seal vectorial es la unin de varias seales. La lnea de
conexin entre el multiplexor y el osciloscopio tiene que llevar las dos seales al mismo
tiempo: la onda senoidal de la que partimos, y la integracin de sta. Del multiplexor
slo parte una lnea, pero en el osciloscopio vemos representadas las dos. La mayora
de los bloques de SIMULINK aceptan por igual las seales escalares y vectoriales. La
representacin de las lneas de conexin escalares y vectoriales es idntica. Para saber
si una seal es escalar o vectorial vamos al men y marcamos la opcin de "mostrar
lneas vectoriales":
Vemos como el sistema nos muestra las lneas vectoriales con un trazo ms ancho.
Aadir Etiquetas al sistema
Se pueden escribir anotaciones en cualquier parte del diagrama de bloques. Para
escribir una anotacin slo hay que hacer doble click con el ratn en el lugar donde
queramos que aparezca. Aparecer un pequeo rectngulo y el cursor se transformar
en una barra vertical. Podemos escribir varias lneas presionando la tecla ENTER.
Cada lnea que escribamos es automticamente centrada en el rectngulo de escritura.
Para terminar la anotacin, picamos con el ratn en cualquier otra parte de la ventana.
Pgina 93 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Podemos, por ejemplo, ponerle un ttulo Primer Ejemplo a nuestro diagrama de
bloques.
Las etiquetas podemos moverlas a cualquier parte del dibujo arrastrndolas con el ratn.
Para cambiar el tipo y tamao de la letra, seleccionamos la anotacin y en el men
"Format Font" hacemos los cambio necesarios.
Etiquetas de lnea
Podemos aadir etiquetas a las lneas del diagrama para hacerlo ms comprensible.
Para ello hacemos doble click sobre la lnea que queramos e insertamos el comentario.
Visualizar seales
Simulink dispone de varios bloques distintos para la visualizacin de seales. Entre ellos
estn el bloque Scope, el bloque XYGraph y el bloque Display. Nosotros utilizaremos
para este ejemplo el bloque Scope:
Pgina 94 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
En nuestro ejemplo, las seales de salida que obtendremos son las siguientes:
En color rosa podemos ver la seal que genera el bloque integrador, mientras que en
color amarillo vemos la onda senoidal de la que partimos.
Con el botn
Pgina 95 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Guardar un modelo
Para guardar un modelo vamos al men File Save , si el modelo ya tiene un nombre
asignado, o File Save As..., cuando es la primera vez que vamos a guardarlo. El
modelo se guardar con extensin .mdl .
Imprimir un modelo
Podemos imprimir un diagrama de bloques seleccionando en el men File Print o
introduciendo la orden print en la lnea de rdenes de MATLAB.
Si elegimos File Print, se imprime el diagrama de bloques del sistema. Entre las
opciones de impresin podemos elegir imprimir slo el sistema o subsistema actual,
imprimir el actual y de nivel superior, el nivel inferior... No se imprime ninguno de los
bloques Scope que est abierto.
No se puede controlar el tamao del sistema cuando el modelo a imprimir se enva
directamente a la impresora. Si el diagrama es mayor que el tamao de pgina,
SIMULINK lo reduce para que entre en la pgina. Para controlar el tamao del modelo
que queremos imprimir, tenemos que hacerlo a travs de un archivo eps, o capturando
pantallas en forma de bitmaps y manipulando posteriormente su tamao mediante un
programa de procesamiento de imgenes.
Pgina 96 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
PARMETROS DE SIMULACIN
Podemos simular un sistema de dos formas: mediante el men de Simulink, o
introduciendo rdenes desde la lnea de comandos de MATLAB. Si lo hacemos de una
u otra forma, encontramos las siguientes diferencias:
Desde Matlab:
- Se pueden modificar las condiciones iniciales de los bloques
- Se genera automticamente una grfica de las salidas o de las trayectorias de estado,
si no indicamos lo contrario.
- Se pueden especificar entradas externas (utilizando el parmetro ut).
- Se puede ejecutar una simulacin desde un fichero-M, permitiendo que los parmetros
en los bloques se cambien iterativamente.
- La simulacin se ejecuta ms rpido
Desde Simulink:
- Mientras se ejecuta la simulacin, se pueden cambiar los parmetros de un bloque o
cualquier parmetro de simulacin, mtodo de simulacin, podemos ver la seal que
transporta cada lnea, etc...
Simulacin de un modelo desde SIMULINK
Si escogemos en el men de Simulation Configuration Parameters nos aparece un
cuadro de dilogo.
Dentro de este cuadro nos encontramos con varias opciones. En ste tutorial
describiremos la primera opcin Solver, la cual se ocupa de todo lo que se refiere al
mtodo de resolucin y la opcin Diagnostics la cual nos permite seleccionar el nivel
de los mensajes de advertencia mostrados durante la simulacin.
Opcin Solver
La opcin Solver nos permite modificar entre otros los siguientes parmetros: tiempo de
simulacin, mtodo de integracin, tamao de pasos mximo y mnimo, mrgenes de
error (tolerancia relativa y absoluta), etc:
Pgina 97 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Tiempo de simulacin:
Los parmetros Start time y Stop time especifican los valores de tiempo en los que la
simulacin comienza y termina. Por defecto, el tiempo inicial es de 0 sg y el tiempo final
de 10 sg, El tiempo de simulacin no es tiempo real, es decir, el verdadero tiempo
empleado en una simulacin no es la diferencia entre el tiempo de inicio y de
finalizacin, sino que depender de la complejidad del modelo, de los tamaos de paso
mnimo y mximo, y del ordenador con el que realicemos la simulacin.
Mtodo de integracin (Solver Options):
Es el mtodo matemtico que utiliza SIMULINK para realizar la simulacin de modelos.
Se hace a travs de modificaciones de ecuaciones diferenciales ordinarias (ODEs).
Debido al comportamiento de los distintos sistemas dinmicos, algunos mtodos pueden
ser ms eficientes que otros, segn el sistema de que se trate.
Podemos elegir entre mtodos de paso variable (Variable-step) o de paso fijo (Fixedstep). Los mtodos de paso variable permiten modificar el tamao del paso durante la
simulacin, mientras que los de paso fijo mantienen el mismo paso durante toda la
simulacin.
El paso es el tiempo o perodo cada cuanto se realiza la resolucin matemtica del
modelo.
Entre los mtodos de paso variable podemos usar:
ode45: Para ecuaciones no demasiado complejas. Es un mtodo de un solo paso, es
decir, para averiguar un punto slo se basa en el calculado anteriormente. En general,
es el mtodo ms apropiado para solucionar la mayora de los problemas. Est basado
en el mtodo de Runge-Kutta.
ode23: Para ecuaciones no demasiado complejas. Es un mtodo de un solo paso.
Est basado en el mtodo de Runge-Kutta. Es ms rpido pero menos preciso que el
ode45.
ode113: Para ecuaciones no demasiado complejas. Es un mtodo multipaso, es decir,
necesita conocer varios puntos anteriores para calcular la solucin. Este es el mtodo
variable de Adams-Bachforth-Moulton.
ode15s: Para ecuaciones complejas. Como el mtodo ode113, es un mtodo de
varios pasos. Se utiliza cuando el mtodo ode45 no es lo suficientemente eficaz.
ode23s: Para ecuaciones complejas. Es un mtodo de un solo paso, basado en la
frmula modificada de Rosenbrock de orden 2, por lo que puede ser ms eficaz que el
mtodo ode15s para tolerancias no muy exigentes.
ode23t: Para ecuaciones de dificultad media, basado en el mtodo de regla
trapezoidal. Es una muy buena alternativa para la resolucin de circuitos elctricos.
discrete: Es el mtodo que usa SIMULINK cuando detecta que el modelo no tiene
estados continuos.
Entre los mtodos de paso fijo podemos usar:
ode5: Es la versin de paso fijo del mtodo ode45 (frmula de Dormand-Prince).
ode4: Es la frmula de Runge-Kutta de orden 4.
ode3: Es la versin de paso fijo del mtodo ode23 (frmula de Bogacki-Shampine).
ode2: Es el mtodo de Heun, tambin conocido como frmula mejorada de Euler.
ode1: Mtodo de Euler.
discrete: Es un mtodo de paso fijo que funciona sin integrar. Esta indicado para
modelos sin estados continuos.
Pgina 98 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Tamaos de paso
En los sistemas de paso variable podemos fijar el tamao de paso mximo y sugerir el
tamao de paso mnimo. En los sistemas de paso fijo, podemos fijar el tamao de paso.
Paso mximo (Max Step Size): Es el mayor tiempo de paso que utiliza el mtodo de
resolucin. Por defecto, viene determinado por los tiempos de inicio y de finalizacin
Generalmente, el valor del paso mximo que SIMULINK toma por defecto es suficiente,
salvo que conozcamos con detalle el comportamiento del sistema.
Paso mnimo (Min Step Size): Por defecto, el mtodo de resolucin fija el tamao de
paso inicial en relacin con el tiempo de inicio de la simulacin. Si nosotros fijamos el
tamao de paso mnimo, pero no se cumple el error mnimo, SIMULINK reduce el
tamao de paso mnimo.
Margen de error: Podemos controlar en la simulacin el error en cada estado. Esto de
mide en la tolerancia relativa y absoluta.
Tolerancia relativa (Relative tolerance): Mide el error relativo de cada estado. La
tolerancia relativa representa un porcentaje del valor de cada estado. Por defecto, la
-3
tolerancia relativa est establecida en 1e . Esto significa que el valor tendr una
exactitud del 0.1%.
Tolerancia absoluta (Absolute tolerance): Es el valor del umbral de error. Representa
como error aceptable el valor de la medida del estado ms prximo a cero.
Opcin Diagnostics
Pgina 99 de 112
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Para cada tipo de evento, podemos elegir entre que no aparezca ningn mensaje
(none), que aparezca un mensaje de advertencia ( warning ), o que nos aparezca un
mensaje de error (error). La diferencia entre estos dos ltimos tipos de mensaje es que
el de advertencia no finaliza la simulacin, mientras que el de error s lo hace.
MEJORA DE PRECISIN Y VELOCIDAD DE EJECUCIN EN LA SIMULACIN
La ejecucin y precisin de una simulacin puede verse afectada por varios factores,
incluyendo el diseo del modelo y la eleccin de los parmetros de simulacin. Para la
mayora de los modelos, los valores que presentan por defecto los mtodos de
resolucin (solvers) son suficientes para obtener una velocidad y precisin aceptables.
Sin embargo, algunos modelos pueden tener un mayor rendimiento si se ajustan bien
los parmetros de simulacin. Asimismo, si tenemos ms informacin sobre el
comportamiento del modelo, los resultados de la simulacin pueden ser mejores.
Simulacin lenta
Las causas de que la velocidad de simulacin sea demasiado lenta pueden ser:
Que el modelo incluya bloques Fcn de MATLAB. Cuando estos bloques aparecen
en un modelo, el intrprete de MATLAB es llamado en cada paso de tiempo,
haciendo la simulacin mucho ms lenta.
Que el modelo incluya un archivo-M o una funcin-S
Que el modelo incluya un bloque Memory. Estos bloques causan que los mtodos
de resolucin de orden variable (ode15s y ode113) vuelvan al orden 1 en cada paso
de tiempo.
Que el tamao de paso mximo sea demasiado pequeo. Si ocurre esto, prueba a
repetir la simulacin con el valor de paso mximo por defecto.
Que la tolerancia absoluta sea demasiado pequea. Normalmente, la tolerancia
por defecto suele ser suficiente.
Que el tiempo de simulacin sea demasiado grande. Prueba a reducirlo.
Que el sistema sea un sistema "stiff" y no estemos usando un mtodo
adecuado. Prueba a usar el mtodo ode15s.
Que el modelo use tiempos de muestreo que no sean mltiplos de los otros.
Esto provoca que se tomen pasos muy pequeos para poder cumplir el tiempo de
muestreo.
Que el modelo contenga lazos algebraicos. Las soluciones a estos lazos son
calculadas iterativamente en cada paso. Por eso, empeora mucho la ejecucin de la
simulacin.
Que el modelo alimente bloques Random Number de un Integrador. Para
sistemas continuos, es mejor usar bloques Band-Limited White Noise block (ruido
blando limitado en banda), de la librera de fuentes.
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
USO DE MSCARAS PARA PERSONALIZAR BLOQUES
Introduccin
El enmascaramiento es una poderosa herramienta de Simulink que permite personalizar
el cuadro de dilogo y el icono de un subsistema. Con el enmascaramiento
conseguimos:
Usar una interfaz ms fcil y descriptiva, ya que incluimos nuestra propia definicin
del sistema, texto de ayuda, e incluso podemos usar nuestras propias etiquetas de
campo.
Usar los valores de los parmetros de los bloques para definir nuevas variables.
Una vez creado el modelo, para crear el subsistema seleccionamos con el ratn todos
los bloques del modelo, y en el men Edit seleccionamos la opcin 'Create Subsystem':
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Vemos que el subsistema se representa como un bloque en el que solo vemos las
entradas y las salidas:
Si queremos ver otra vez el contenido del subsistema y acceder a sus bloques, hacemos
doble click con el ratn sobre el bloque Subsystem y vemos lo que hay en su interior:
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
FUNCIONES S
Qu es una funcin S?
Una Funcin S es una descripcin de un sistema dinmico. Las Funciones S
pueden escribirse en lenguaje MATLAB o C. Las escritas en lenguaje MATLAB son
compiladas como archivos MEX, y al igual que otros archivos MEX son enlazados
dinmicamente dentro de MATLAB cuando se necesita.
La forma de una Funcin S es muy general, y puede ajustarse a sistemas continuos,
discretos o hbridos. De hecho, casi todos los modelos Simulink pueden escribirse como
una Funcin S.
Si existe una Funcin S escrita en forma de archivo MEX (lenguaje C), y otra con el
mismo nombre escrita en forma de archivo M, tiene preferencia el archivo C MEX, y es
el que se ejecuta cuando llamemos a la funcin.
Para insertar una Funcin S en un modelo de Simulink, disponemos del bloque SFunction, que se encuentra en la librera User-Defined Functions
.
El cuadro de dilogo de una Funcin S es el siguiente:
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Cuando se usa una Funcin S?
Para lo que ms se usan la Funciones S es para crear bloques de Simulink
personalizados por el usuario. Entre las aplicaciones de las Funciones S se encuentran:
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
SIMPOWERSYSTEMS
Introduccin
SimPowerSystems es una herramienta que se utiliza dentro del ambiente de Simulink
para la construccin de modelos y la simulacin de sistemas elctricos de potencia.
En SimPowerSystems se pueden realizar simulaciones con los mtodos convencionales
(en tiempo continuo y en tiempo discreto) o con el mtodo de simulacin fasorial, que es
ms rpido pero se debe utilizar tomando en cuenta sus ventajas y sus limitaciones.
Como habamos visto Matlab es un entorno de programacin de alto nivel que combina
el clculo numrico y grficos avanzados. Una de las caractersticas que ms ha
contribuido a la difusin de Matlab es la posibilidad de simular casi cualquier sistema en
un entorno grfico. Este entorno completamente integrado en Matlab, se denomina
Simulink. La gran cantidad de libreras de elementos que posee Simulink facilita el
desarrollo y simulacin de sistemas de ndole diversa: mecnicos, elctricos, hidrulicos,
digitales, redes neuronales, aeroespaciales, etc.
Como vimos, para acceder a Simulink es necesario ejecutar en primer lugar Matlab. Una
vez arrancado este aparece una ventana similar a la mostrada en la Figura 1. En ella
pulsando sobre el icono correspondiente (indicado en dicha figura) se accede al entorno
de Simulink cuya ventana inicial Figura 2 muestra la lista de libreras disponibles.
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
CREACIN DE MODELOS EN SIMULINK
Para crear un modelo se hace clic sobre el icono Create new model con lo que
aparecer una nueva ventana donde se encuentra la zona de trabajo (Figura 3).
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
DESARROLLO DE ACTIVIDADES
Actividad 1. Anlisis transitorio de un circuito de primer orden.
El circuito a simular es un circuito RL serie cuyos parmetros se muestran en la Figura
6. La fuente ser de distintos tipos como se detallar ms adelante.
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
En el modelo construido slo se ha dispuesto un elemento para medir la corriente de la
rama RL. Si se desea, pueden aadirse otros, ya sean medidores de tensin o
intensidad, simplemente conectndolos al circuito y a un visualizador tipo Scope.
Sobre este circuito realizaremos las simulaciones que se detallan a continuacin:
Circuito sin fuente con condiciones iniciales no nulas.
Asignaremos valor cero a la fuente, R=5, L=0.25H y condicin inicial de la intensidad
de la bobina en 5A (Todo ello haciendo doble clic sobre los elementos). Para que estas
condiciones iniciales sean tenidas en cuenta es necesario hacer doble clic en el bloque
Continuous y en el apartado Inicial Status Setting seleccionar Force initial Status To
Block Setting.
Realizar la simulacin entre 0 y 1 segundos
Medir de forma aproximada el tiempo que tarda en desaparecer la intensidad del
circuito.
Cambiar las condiciones iniciales a 10 A y medir el nuevo tiempo de extincin de
la intensidad.
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
SimPowerSystems, subgrupo elements, bajo el nombre de Breaker. En estos
interruptores es posible configurar si el control de apertura y cierre es externo o interno,
la posicin inicial, y los tiempos en los que se quiere que cambien de estado.
Universidad Tecnolgica Nacional-Facultad Regional CrdobaCtedra: Fundamentos de Informtica-Curso 1Q1 ( Ing. Elctrica )Unidad Temtica 5: Software de la Especialidad (ao 2015)
La fuente de tensin y la resistencia tomarn distintos valores como se seala a
continuacin.
5. Realizar el modelo Simulink que permita simular el circuito de la Figura 10,
insertando los elementos necesarios para visualizar la intensidad del circuito y la
tensin del condensador. La fuente de tensin ser inicialmente de continua y
valor cero. La resistencia tomar valor 3. Las condiciones iniciales sern:
Intensidad 3A, tensin del condensador 2V.
En estas condiciones observar el tipo de respuesta que presenta el circuito.
6. Modificar el valor de la resistencia a 2,1 y 0 , sucesivamente comprobando
como cambia la forma de las respuestas del circuito.
7. Asignar a la fuente un valor de 5 Vcc y comprobar para los distintos valores de R,
como el tipo de respuesta no depende del valor de la fuente
8. Repetir el apartado anterior con una fuente de alterna de 10 V, 10 Hz.
El presente material es de lectura obligatoria para el desarrollo de los contenidos en el
examen final de acreditacin de la asignatura.