0% encontró este documento útil (0 votos)
14 vistas117 páginas

Introducción a MATLAB R2007b

El documento proporciona una introducción a MATLAB, incluyendo: 1) Una descripción general de MATLAB como un entorno de computación para proyectos que involucran cálculos matemáticos y visualización gráfica. 2) Detalles sobre cómo arrancar MATLAB y la interfaz de usuario inicial. 3) Un resumen de las capacidades básicas de MATLAB como el cálculo numérico con vectores y matrices, gráficos, y lenguaje de programación.

Cargado por

Ja Cinto
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
14 vistas117 páginas

Introducción a MATLAB R2007b

El documento proporciona una introducción a MATLAB, incluyendo: 1) Una descripción general de MATLAB como un entorno de computación para proyectos que involucran cálculos matemáticos y visualización gráfica. 2) Detalles sobre cómo arrancar MATLAB y la interfaz de usuario inicial. 3) Un resumen de las capacidades básicas de MATLAB como el cálculo numérico con vectores y matrices, gráficos, y lenguaje de programación.

Cargado por

Ja Cinto
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Universidad Tecnológica Nacional-Facultad Regional Córdoba-

Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-


Unidad Temática 5: Software de la Especialidad (año 2015)

Desarrollo De Contenidos Editados Por La Cátedra


Año 2015

Asignatura: Fundamentos de Informática


Especialidad: Ing. Eléctrica
Profesor: Ing. Carlos Víctor Coyos
ccoyos@[Link]
JTP: Ing. Horacio Pablo Lezin
hlezin@[Link]

Contenido:

UNIDAD TEMATICA 5: Software de la especialidad

5.1 INTRODUCCION AL USO DE MATLAB: Descripción. Arranque. Ayuda. Interfaz


de usuario. Formato de números y precisión. Edición de línea de comandos.
Comandos básicos. Manejo de variables. Asignar, nombrar, borrar y visualizar
[Link] aritméticos, relacionales y lógicos. Expresiones simbólicas.
Funciones elementales. Guardar y cargar ficheros de datos.

TRATAMIENTO DE VECTORES Y MATRICES: Carga de vectores. Operaciones


elementales. Componentes equiespaciados, comandos linspace y logspace.
Introducción de matrices, referencia de elementos, filas y columnas. Comandos
diag e inv. Funciones y operaciones elementales. Solución de ecuaciones lineales.

TRATAMIENTO DE POLINOMIOS: Representación. Raíces. Valuación. Producto.


Comandos principales. REPRESENTACIONES GRÁFICAS: Comandos plot, axis,
grid, xlabel, ylabel, title, legend, ginput, loglog, semilogx, semilogy, logspace, fplot,
clf. TRATAMIENTO DE NÚMEROS COMPLEJOS: Representación. Asignación a
vectores y matrices. Funciones elementales, complex, abs, angle, conj.

5.2 INTRODUCCIÓN A LA PROGRAMACIÓN: Ficheros de comandos (SCRIPTS).


Estilo y hábitos de programación. Estructuras condicionales y repetitivas.
Sentencias while, for, break, continue. Bucles anidados. Comandos %, input, disp,
fprintf. FUNCTION: Declaración, variable, parámetros, nombre, instrucciones.
Entorno de variables. Recepción y entrega de vectores o matrices.

5.3 INTERACCIÓN CON EXCEL: Importar y exportar datos. Función xlsread y xlswrite

5.4 SIMULINK : Conceptos de Modelar, Simular, Analizar. Arrancar simulink. Bloques


propios. Librerías. Creación de un modelo: Inserción, parámetros y conexión de
bloques. Señales Vectoriales. Etiquetas. Visualizar señales. Guardar e Imprimir un
modelo. Parámetros de simulación. Opción Solver. Tiempo de simulación. Método
de integración. Paso variable y paso fijo. Tamaño de paso. Margen de error.
Tolerancia relativa y absoluta. Opción Diagnostics. Mejora de precisión y
velocidad. Uso de máscaras. Funciones S: Cuando se usan y como funcionan.
SIMPOWERSYSTEMS: Introducción, librerías y creación de modelos. (Desde la
versión Matlab R2018 SIMPOWERSYSTEM se denomina SPECIALIZED POWER SYSTEMS)

Página 1 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

INTRODUCCIÓN A LA PROGRAMACIÓN Y AL USO DE MATLAB

ATENCION

• El presente trabajo, que trata sobre los contenidos según programa analítico de la
cátedra, es solamente a fines de LECTURA BÁSICA INTRODUCTORIA.

• La profundidad de los contenidos desarrollados en el presente deben ser


estudiados desde el material publicado en la autogestion, denominado:

Matlab7.0_como_si_estuviera_en_primero

OBJETIVOS

• SUMINISTRAR a los alumnos las herramientas introductorias fundamentales para la


comprensión, operación y desarrollo de programas informáticos, actuando como
elemento potenciador.

• CAPACITAR a los alumnos en el manejo de utilitarios y software de uso específico


de la especialidad, para familiarizarlos con estas tecnologías aplicadas a la
resolución sistemática de problemas que se presentan en el desarrollo de la carrera.

REFLEXION

• El uso de software especializado no reemplaza el conocimiento científico y


matemático que debe poseer un ingeniero electricista para realizar estudios de
sistemas eléctricos, sino que constituye una ayuda para obtener resultados de
manera rápida y precisa.

• El manejo de software en el mundo de la informática es un proceso de aprendizaje


continuo y sin límite. El aprendizaje lleva a agilizar el manejo del software pero no
llega nunca al manejo total del mismo.

Página 2 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Descripción
Matlab es un entorno de computación y desarrollo de aplicaciones
totalmente integrado, orientado para llevar a cabo proyectos en donde se encuentren
implicados un gran número de cálculos matemáticos y se requiera la visualización
gráfica de los mismos, Matlab integra un análisis numérico, cálculo matricial, proceso de
señales y visualización gráfica.
El nombre de Matlab proviene de la abreviación inglesa Matrix Laboratory, (Laboratorio
de Matrices) y su código en principio fue escrito para proporcionar un fácil acceso al
software de matrices desarrollado en los años 70’s, dentro de los proyectos Linpack y
Eispack, que fueron librerías desarrolladas en Fortran.
Lo podemos considerar como un lenguaje de programación interpretado. Éstos
lenguajes interpretados o “scripting“no deben ser compilados. Un script es una serie de
órdenes que se pasan a un intérprete para que las ejecute. Estas órdenes están escritas
en un lenguaje de programación propio del intérprete que ejecuta lo pedido en una línea
y no ejecuta la siguiente hasta que haya terminado la anterior, siempre que esta sea
correcta.
Difiere de un archivo de código fuente por él hecho que no tiene que ser compilado, es
decir es ejecutable por sí mismo siempre que se llame con él intérprete adecuado.
De este modo podemos diferenciar los lenguajes basados en código fuente de los
lenguajes de scripting.
Los primeros son, por ejemplo, C++, Fortran, Cobol, Pascal...
En ellos se genera un código fuente y un programa llamado compilador que a su vez lo
convierte en un archivo que él sistema operativo es capaz de ejecutar. Este ejecutable
es a su vez dependiente del sistema operativo, con lo que no distribuimos él ejecutable
sino él código fuente sabiendo que la máquina a la que migramos él código dispone de
tal compilador.
Entre los lenguajes de scripting más conocidos tenemos por ejemplo los lenguajes de
uso general, como Java.
Existe una gran variedad en los lenguajes de scripting orientado a fines matemáticos.
Como son Matlab, Maple, Mathematica, Scilab, etc.
De éstos los más conocidos son Matlab y Mathematica, en parte debido a que son
programas comérciales. No debemos considerar a Matlab como único lenguaje sujeto a
un fin. El scripting científico es una gran herramienta que nos puede ser de mucha
ayuda en la solución de problemas científicos y la visualización de resultados. Una vez
que hayamos aprendido a usar él entorno de Matlab nos será más fácil aprender a
utilizar Scilab por la similitud en su ejecución de órdenes.
La sintaxis de Matlab es muy simple y cuenta con una gran biblioteca de funciones
matemáticas. Es un lenguaje muy cómodo si deseamos escribir pequeños programas no
muy complejos o para guardar instrucciones y después ejecutarlas en secuencia con el
fin de mostrar los resultados sobre algún problema complejo. Matlab es ante todo un
lenguaje, más que un programa en sí. Y como mencionamos anteriormente casi todo lo
que aprendamos en él, lo podemos realizar en Scilab...
Desde sus inicios, Matlab ha estado renovándose. Producto del interés en distintas
áreas han surgido gran cantidad de útiles para cada área que vienen agrupados en
paquetes denominados “toolboxes” o “cajas de herramientas” entre los cuales podemos
nombrar los toolboxes SIMULINK y SIMPOWERSYSTEM, que trataremos más adelante.
Contiene muchas herramientas y utilidades que permiten además diversas
funcionalidades, como la representación gráfica en 2 y 3 dimensiones.
Estas características hacen de Matlab una herramienta de trabajo muy extendida entre
los estudiantes universitarios como entre técnicos e investigadores.
Página 3 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Resumiendo

MATLAB: “MATrix LABoratory”. (Laboratorio de matrices)

• Realiza cálculos numéricos con vectores y matrices.


• Trabaja con números escalares −tanto reales como complejos−, con cadenas de
caracteres y otras estructuras de información mas complejas.
• Permite realizar una amplia variedad de gráficos en dos y tres dimensiones.
• Tiene un lenguaje de programación propio.
• MATLAB se puede arrancar como cualquier otra aplicación de Windows, clicando
dos veces en el icono correspondiente en el escritorio o por medio del menú Inicio.

Arranque de Matlab (Versión Matlab R2013a)


Al arrancar MATLAB se abre una ventana similar a la mostrada en la siguiente figura.

Ventana inicial de MATLAB R2013a.

Ésta vista que se obtiene eligiendo la opción Layout/Default, en el menú HOME.

Página 4 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Como esta configuración puede ser cambiada fácilmente 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 más 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
escribiéndolas una a una a continuación del símbolo >> (prompt: aviso característico),
que aparece en una interfaz de usuario (subventana).
En esta subventana se ejecutan los comandos de MATLAB, a continuación del prompt
que indica que el programa está preparado para recibir instrucciones.

En la figura muestra que se ha ejecutado el comando


>>A=magic(6)
Que nos entrega una matriz aleatoria de 6 x 6.
Una manera de seguir esta introducción consiste en abrir Matlab en otra ventana,
e ir copiando y pegando el comando a continuación del símbolo >>.

En la pantalla aparecen ventanas también muy útiles:

La ventana Current Folder muestra los ficheros del directorio activo o actual. El
directorio activo se puede cambiar desde la Command Window, o desde la propia
ventana con los métodos de navegación de directorios propios de Windows.

La ventana Workspace contiene información sobre todas las variables que se hayan
definido en esta sesión y permite ver y modificar las matrices con las que se esté
trabajando.

Página 5 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

La ventana Command History muestra los últimos comandos ejecutados en la


Command Window. Estos comandos se pueden volver a ejecutar haciendo doble clic
sobre ellos. Clicando sobre un comando con el botón derecho del ratón se muestra un
menú contextual con las posibilidades disponibles en ese momento. Para editar uno de
estos comandos hay que copiarlo antes a la Command Window.
Una vez que hemos arrancado Matlab, si deseamos terminar podemos bien teclear exit
en la ventana de comandos, pulsar la secuencia ctrl.+Q o ir a la barra de título y elegir
Cerrar.

Para apreciar desde el principio la potencia de MATLAB, se puede comenzar por


escribir en la Command Window a continuación del prompt la siguiente línea y al
finalizar pulsar enter.

>> A=rand(6),B=inv(A),B*A

Página 6 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

En la línea de comandos anterior se han escrito tres instrucciones diferentes, separadas


por comas.

Como consecuencia, la respuesta del programa tiene tres partes también, cada una de
ellas correspondiente a cada una de las instrucciones.

Con la primera instrucción A=rand(6) se define una matriz cuadrada (6×6) llamada A,
cuyos elementos son números aleatorios entre cero y uno (aunque aparezcan sólo 4
cifras, han sido calculados con 16 cifras de precisión).

En la segunda instrucción B=inv(A), se define una matriz B que es igual a la inversa de


la matriz A.

Finalmente en la tercera instrucción se ha multiplicado B por A, y se comprueba que el


resultado es la matriz unidad.

Otro de los puntos fuertes de MATLAB son los gráficos, que se verán con más detalle
en una sección posterior.

A modo de ejemplo, se puede teclear la siguiente línea y pulsar intro:

>> x=-4:.01:4; y=sin(x); plot(x,y), grid, title('Función seno(x)')

Página 7 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 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 función sin(x).

Esta figura tiene un título "Función seno(x)" y un cuadriculado o "grid".

En realidad la línea de comando anterior contiene también 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
centésima.

A continuación se crea un vector y, cada uno de cuyos elementos es el seno del


correspondiente elemento del vector x.

Después se dibujan los valores de y en ordenadas frente a los de x en abscisas.

Las dos últimas instrucciones establecen la cuadrícula y el título.

Como mencionáramos, en capítulos siguiente veremos con mas detalles las


representaciones gráficas.

Página 8 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

AYUDA EN MATLAB
Ayuda en línea

Como mencionáramos, éste documento es tan sólo una introducción -muy resumida- del
lenguaje y del manejo de Matlab, por lo que antes de seguir, es conveniente indicar
cómo puede obtenerse ayuda sobre cualquier detalle referente a Matlab.
Desde Matlab pueden obtenerse explicaciones sobre un tema particular. Hay varios
métodos.

Con el comando help


Nº 1) Si se escribe sólo help, se obtiene una lista de toolboxes y utilidades
instaladas, que se pueden elegir para su consulta por medio de un
hipervínculo que los lleva a la página de ayuda.

También puede obtenerse información sobre uno de los temas de esa lista, por
ejemplo:
>>help elfun (proporciona información sobre funciones matemáticas elementales)

Página 9 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Nº 2) En un segundo nivel es posible obtener ayuda sobre un toolbox determinado,


escribiendo:
>> help nombre_toolbox (Ejemplo >> help simulink)

Nº 3) Finalmente, para solicitar una información más completa sobre el uso y sintaxis
de una función o un comando, es preciso teclear:
>>help nombre_función (Ejemplo >> help sqrt)
>>help nombre_comando (Ejemplo >> help input)

Página 10 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Con la ventana de ayuda.


Escogiendo en la cinta de tareas el menú Help dispondremos de opciones distintas de
ayudas e información sobre el software.

Eligiendo la opción Documentation se abre una ventana general donde También puede
escribirse directamente en la zona superior izquierda el nombre del comando deseado:
por ejemplo, para buscar información sobre sqrt (raiz cuadrada)

Página 11 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 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 ejecución de los mismos.

>>demo
Nos abre una ventana de ayuda de como empezar con Demos

En la ventana izquierda posicionar el ratón sobre un toolbox y hacer click sobre el


mismo, desplegándose una ventana a la derecha, donde se visualizan distintos demos,
activar el deseado por medio del hipervinculo y luego arrancar la demostración.

Página 12 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Desenvolverse en la interfaz de usuario

Reglas básicas.
• El punto decimal es . (no una coma).
• En Matlab, las mayúsculas y las minúsculas son distintas. Es decir, A es una
variable diferente de a.
Matlab distingue entre mayúsculas y minúsculas por lo que casi siempre los comandos e
instrucciones se escriben con minúsculas.
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.

Formato de números y precisión

En Matlab la precisión utilizada es de aproximadamente 16 dígitos.

El formato con el que deseamos visualizar los valores, puede ser modificado por los
siguientes comandos:

Para esto utilizaremos como ejemplo la fracción 4/3

Comando Visualización Ejemplo


format short Por omisión 4 decimales 1.3333
format long 14 decimales 1.33333333333333
format short e 4 decimales 1.3333e+000
format long e 15 decimales 1.333333333333333e+000
format bank 2 decimales 1.33
format hex Exp. hexadecimal 3ff5555555555555
format rat Cociente de entero 4/3

Edición de la línea de comandos.

Con las flechas del teclado se pueden recuperar las órdenes anteriores, sin
tener que volver a teclearlas.

Es habitual cometer un error al escribir una cierta expresión, sobre todo si ésta es larga
y complicada, y no darnos cuenta hasta ejecutarla y comprobar él mensaje de error, esto
será algo normal si estamos empezando a conocer Matlab, mediante las teclas de los
cursores podemos editar las instrucciones escritas anteriormente y así corregirlas.

>> d2_f=(y2-2*y1+y3)/deltax^2)
??? d2_f=(y2-2*y1+y3)/deltax^2)
|
Error: Unbalanced or misused parentheses or brackets.
>>
En vez de volver a teclear toda la línea de comando, puede recuperarse la instrucción
pulsando la tecla "flecha hacia arriba", desplazarse hasta el error (en nuestro ejemplo
falta un paréntesis) con la flecha hacia a la izquierda, y arreglarlo:
» d2_f=(y2-2*y1+y3)/(deltax^2)

Página 13 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

La siguiente tabla muestra él uso de las teclas del cursor y otros

Permiten él movimiento por todos los comandos que


Teclas del cursor vertical
hayamos introducidos anteriormente.
Teclas del cursor horizontal Nos permite movernos por la línea de comando.
Inicio Para colocar él cursor al comienzo de la línea.
Fin Para colocarlo al final de la misma.
Blackspace Borra la línea de edición completa.
Después de haber escrito un comando, esta tecla lo
Esc
puede borrar.
COMANDOS BÁSICOS
En esta sección se explica cómo usar Matlab a modo de calculadora. Empecemos con
algo sencillo: las operaciones matemáticas elementales.

Manejo de variables
Asignación

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 cuál 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 función del mismo nombre.

Página 14 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Borrar variables

clear sup Borra del Workspace la variable sup

clear all Borra todas las variables del Workspace

Visualizar el nombre de las variables utilizadas

El comando who indica las variables con las que se está trabajando

>> who
Your variables are:
R V horas_trab pagar valor_hora
Para una lista un poco más detallada sobre las características de cada variable
utilizamos whos además de la lista proporcionara información acerca del tipo de datos
en cada variable y el tamaño que ocupa en memoria

Operadores aritméticos

La notación de operadores para las operaciones matemáticas elementales es:

^ potenciación
* multiplicación
/ división
+ suma
- resta

El orden, precedencia o jerarquía en que se realizan las operaciones de una línea, es el


siguiente: primero la potenciación, luego las multiplicaciones y divisiones y finalmente
las sumas y las restas.

Si se quiere forzar un determinado orden, se deben utilizar paréntesis, que se evalúan


siempre primero.
Por ejemplo, para hallar dos dividido tres,

» 2/2+1
ans =
2
(en efecto: primero se calcula 2/2 y luego se suma 1).

Forzando la operación por medio de paréntesis


» 2/(2+1)
ans =
0.6667
Primero se calcula el paréntesis (2+1)=3 y luego se realiza la división 2/3.

Página 15 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Operadores relacionales
Se utilizan para establecer una relación entre dos valores creándose una expresión
relacional. Esta expresión compara los valores entre si y produce un resultado de
certeza o falsedad (verdadero o falso) denominado valor lógico.
Los operadores relacionales comparan valores del mismo tipo (numéricos o carácter).

> 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 símbolos ==.
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 tomaría el valor 3, independientemente de lo que valiera antes.
En cambio, x==3 es el análogo en lenguaje informático 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 número 126. En algunos sistemas operativos,
también sirve apretar AltGr y, sin soltarla, apretar la tecla 4.

Operadores lógicos
Estos operadores se utilizan para establecer relaciones entre valores lógicos,
creándose una expresión lógica. Estos valores pueden ser resultado de una expresión
relacional.
Tipos de operadores Lógicos

Denominación Código Matlab Código ASCII


Conjunción & Alt + 38
Disyunción | Alt + 124
Negación ~ Alt + 126

Expresiones simbólicas

Si deseamos trabajar con símbolos, debemos indicarle al programa que se trata de


símbolos.
Para esto utilizamos el comando “sym” por ejemplo, si escribimos: 2/3

>> 2/3
ans =
0.6667

Página 16 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

En cambio, si queremos que 2 y 3 se consideren como símbolos (de forma que sólo se
opere de forma exacta con ellos), deberemos escribir:

>>sym(2/3)
ans =
2/3

Si deseamos realizar la siguiente operación aritmética: (2/3)+(1/4), Debemos escribir:

>>sym(2/3)+sym(1/4)
ans =
11/12
o también

>> sym((2/3)+(1/4))
ans =
11/12

Análogamente se pueden definir variables; por ejemplo, para definir la variable x


podríamos escribir:

>>x= sym('x')
Una vez definida la variable x, podremos realizar operaciones simbólicas con ella:

>>x+3*x
ans =
4*x

Si tenemos que utilizar varios símbolos es recomendable definirlos todos


simultáneamente,

Esta instrucción va seguida de los símbolos a definir, separados por espacios; Ej.:
>>syms t s x y
Funciones elementales.
Las funciones, en Matlab, se escriben introduciendo el argumento entre paréntesis a
continuación del nombre de la función, sin dejar espacios. Por ejemplo:
» y=exp(0)
y=
1
La función exp es el número natural e elevado a la potencia indicada entre paréntesis
(en este caso cero).

He aquí una tabla con algunas funciones elementales

sin seno
cos coseno
tan tangente
sec secante

Página 17 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

csc cosecante
cot cotangente
exp exponencial
log logaritmo natural
sqrt raíz cuadrada
abs valor absoluto

Para obtener las funciones trigonométricas inversas, basta añadir una a delante del
nombre de la función. Y para las funciones hiperbólicas, una h al final.
Por ejemplo, atanh(x) es el arcotangente hiperbólico de x:

>> z=atanh(2)
z=
0.5493 + 1.5708i (dónde z es un número 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 instrucción.

>> y=sqrt(4);
>> (El resultado no aparece, pero sin embargo el cálculo se ha realizado)

ya que si hacemos:
>> y
y=
2 (Vemos que y=2)

Guardar y cargar ficheros de datos.

save nom_arch Guarda el Workspace en un archivo con el nombre nom_arch

load nom_arch Carga en el Workspace el archivo guardado como nom_arch

Página 18 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 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

Transposición: Para la operación transponer (cambiar filas por columnas) se utiliza el


apóstrofe

>> w=[1 0 1/3] (vector w)


w=
1.0000 0 0.3333

>> w' (vector transpuesto de w)


ans =
1.0000
0
0.3333

Suma:

» v+w'
ans =
2.7321 0 -1.6667

Producto:

» v*w
ans =
1.0654

Página 19 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 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 (los componentes de x van desde 4 de 2 en 2 hasta 10).

Otra forma de generar vectores de componentes equiespaciados es usando los


comandos linspace y logspace.

El comando linspace genera un vector desde n1 a n2 de n componentes, los cuales


poseen valores espaciados linealmente.

>>t = linspace(n1,n2,n)

Ej:
>> t = linspace(4,10,4)
t=
4 6 8 10

Por su parte, logspace produce también un vector de n componentes, pero sus valores
están espaciados logarítmicamente desde 10 n1 a 10n2.
>>w = logspace(n1,n2,n)

Ejemplo

>> w = logspace(4,10,4)
w=
10000.00 1000000.00 100000000.00 10000000000.00

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
>> M(3,1) (3 indica tercera fila y 1 indica primera columna)
ans =
7

Página 20 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
o también

>> M(3) (es el tercer elemento contando sucesivamente por columnas)


ans =
7

>> M(8) (es el octavo elemento contando sucesivamente por columnas)


ans =
6

Para referirse a toda una fila o a toda una columna se emplean los dos puntos:

>> v2=M(2,:)

v2 =

4 5 6 (v2 es la segunda fila de M)

>> v1=M(:,2)
v1 =
2
5
8 (v1 es la segunda columna de M)

Diagonal: para obtener la diagonal de la matriz M, usamos el comando diag

>> diag(M)
ans =
1
5
9

Inversa: para obtener la inversa de una matriz A, usamos el comando inv

>>A=[2 4 6;4 5 6;3 1 -2];


>> inv(A)
ans =
-2.6667 2.3333 -1.0000
4.3333 -3.6667 2.0000
-1.8333 1.6667 -1.0000

Página 21 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Funciones y operaciones elementales

B = A' calcula la traspuesta (conjugada) de la matriz A


B = A.' calcula la traspuesta (sin conjugar) de la matriz A
v = poly(A) devuelve un vector v con los coeficientes del polinomio
característico de la matriz cuadrada A
t = trace(A) devuelve la traza t (suma de los elementos de la diagonal) de una
matriz cuadrada A
[m,n] = size(A) devuelve el número de filas m y de columnas n de una matriz
rectangular A
n = size(A) devuelve el tamaño de una matriz cuadrada A
nf = size(A,1) devuelve el número de filas de A
nc = size(A,2) devuelve el número de columnas de A

Con las matrices también funcionan las operaciones matemáticas elementales.


>> M = [1 2 3 ;4 5 6 ;7 8 9]
M=
123
456
789
>> M*M
ans =
30 36 42
66 81 96
102 126 150
>> M^2
ans =
30 36 42
66 81 96
102 126 150

Operaciones con elementos

Si se quiere operar en los elementos de la matriz, uno por uno, se pone un punto antes
del operador.

Si se quiere elevar al cuadrado cada uno de los elementos de M, entonces:


>>M.^2
ans =
1 4 9
16 25 36
49 64 81

Página 22 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Tipos de matrices predefinidas

Existen en MATLAB varias funciones orientadas a definir con gran facilidad matrices de
tipos particulares. Algunas de estas funciones son las siguientes:

eye(4) forma la matriz unidad de tamaño (4x4)


zeros(3,5) forma una matriz de ceros de tamaño (3x5)
zeros(4) ídem de tamaño (4x4)
ones(3) forma una matriz de unos de tamaño (3x3)
ones(2,4) idem de tamaño (2x4)
rand(3) forma una matriz de números aleatorios entre 0 y 1, con distribución
uniforme, de tamaño (3x3)
rand(2,5) idem de tamaño (2x5)

Solución de ecuaciones lineales

Para resolver un sistema de ecuaciones lineales, Matlab dispone del comando rref
Por ejemplo, si tenemos él siguiente sistema:

2 x1 + 4 x2 + 6 x3 = 18
4 x1 + 5 x2 + 6 x3 = 24
3 x1 + x2 − 2 x3 = 4

La solución 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

Representación: los polinomios se representan por vectores cuyas componentes son


los coeficientes del mismo.

Si tenemos p(x) = x2 - 3x + 2 ,éste polinomio se representa por un vector p

» p=[1 -3 2]
p=

Página 23 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
1 -3 2

Raíces: Para hallar las raíces del polinomio, se hace

» roots(p)
ans =
2
1

Valuación: 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 función llamada conv() ( producto de convolución).

En el siguiente ejemplo vamos a observar cómo 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) Nos muestra las raíces del polinomio pol

polyval(pol,x) Evaluamos el polinomio pol para él valor de x. Si x es un vector, pol


se evalúa para cada elemento de x

polyvalm(pol,A) Evaluamos el polinomio pol para la matriz A

conv(p1,p2) Producto de convolución de dos polinomios p1 y p2

[c,r]=deconv(p,q) División del polinomio p entre el polinomio q. En c se devuelve el


cociente y en r él residuo de la división

Página 24 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
residue(p1,p2) descompone él cociente entre p1 y p2 en suma de fracciones
simples

polyder(pol) Calcula la derivada de un polinomio

polyder(p1,p2) Calcula la derivada de producto de los polinomios

REPRESENTACIONES GRÁFICAS

Plot: las gráficas son producidas por él comando plot, aunque se pueden generar
gráficas de otras maneras, en este caso mostraremos el uso del mismo.

Para ver las especificaciones posibles, teclear help plot.

Representación de la función seno entre 0 y 10.

Para empezar creamos una variable x que vaya de cero a 10:


» x=0:0.1:10;

y a continuación, calculemos sin(x) almacenando el resultado en la variable y:


» y=sin(x);

Para trazar el gráfico, se emplea la función plot:


» plot(x,y)

y se obtiene en otra ventana el siguiente gráfico.

Axis: entre los muchos comandos que se pueden utilizar para modificar los gráficos, 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 límites inferior y superior del eje x, e y1 e y2 los del eje y.

Para representar los puntos o datos con símbolos de colores, se añade la especificación
entre apóstrofes al comando plot.

Vamos a crear una variable con dos filas que contenga los números del 1 al 10 en la
primera fila, y el doble de esos números en la segunda, y dibujarlos con puntos rojos:

Página 25 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

>> x1=0:10
x1 =
0 1 2 3 4 5 6 7 8 9 10

>> x2=2*x1
x2 =
0 2 4 6 8 10 12 14 16 18 20

>> x=[x1;x2]
x=
0 1 2 3 4 5 6 7 8 9 10
0 2 4 6 8 10 12 14 16 18 20>> plot ( x (1, :) , x (2 , : ) , 'ro‘ )

Donde, 'ro' establece un gráfico de color rojo: r y de puntos: o

Si no se indica nada, el gráfico se traza con una línea azul.


Comandos básicos

grid traza un cuadrícula.

xlabel ('títulox') para poner un título en x

ylabel('títuloy') para poner un título en y

title ('Plano complejo')

Para imprimir una figura, basta seleccionar print del menú de la figura.

El comando plot nos da la opción de cambiar la representación de los puntos de la


gráfica, las formas más habituales son:

Car. Representación Car. Representación Car. Representación


. punto * asterisco -- segmento
o círculo - sólido + más
x marca : punteado -. segmento punto

Página 26 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Los tipos de color los obtenemos introduciendo la letra de cada color:

Letra Color Letra Color Letra Color


y amarillo c cyan(azul claro) r rojo
b azul m magenta g verde
w blanco k negro

Otras consideraciones y ejemplos

Para ello vamos a crear una serie de incrementos que hemos definido anteriormente,
éstos iniciaran con un valor -4 hasta +4, con incrementos de 0.1.

El comando “loglog” crea un dibujo usando escalas logarítmicas para ambos ejes.

El comando “semilogx” crea un dibujo usando una escala logarítmica para él eje x, y una
escala lineal para el eje y.

El comando “semilogy” crea un dibujo usando una escala logarítmica para el eje y, y una
escala lineal para él eje x.

El comando “logspace” crea una escala para un determinado eje.

Ej:
>>x=logspace(-1,3); %Crea un eje x de 10^-1 a 10^3
>>loglog(x,exp(x)); %Grafica la función e^x

El comando “fplot” nos permite dibujar la gráfica de una función con la siguiente sintaxis:
>>fplot(`función',[inicio,final])
El comando “clf” nos borra la gráfica creada.

Para que la gráfica tenga una leyenda ubicada en el 3º cuadrante para distinguir las
series graficadas,

legend('seno',3)

Para incluirle al gráfico una rejilla o cuadriculado usamos: grid on

Ejemplo: dibujar la gráfica de la función seno entre cero y 2*pi, con un título y con una
leyenda que aparezca en el 3º cuadrante.
Además 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

Página 27 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Un comando muy útil también es “[ejes]=ginput(#)” con él que podemos señalar varios
puntos de la gráfica 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 código, se nos abre el gráfico y una cruz móvil con el ratón,
para indicarle un punto de la gráfica haciendo click y el código nos devuelve las
coordenadas de tantos puntos como sea el argumento de ginput.

Página 28 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Para más información o ayuda en línea help graph2d o help graph3d.

TRATAMIENTO DE NUMEROS COMPLEJOS

En muchos cálculos matriciales los datos y/o los resultados no son reales sino
complejos, con parte real y parte imaginaria.
MATLAB trabaja sin ninguna dificultad con números complejos.

>> a=sqrt(-4)
a=
0 + 2.0000i

>> 3 + 4j
ans =
3.0000 + 4.0000i

Representación
>> 3 + 4j
ans =
3.0000 + 4.0000i
En la entrada de datos de MATLAB se pueden utilizar indistintamente la i y la j para

Página 29 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
representar el número imaginario unidad (en la salida, sin embargo, puede verse que
siempre aparece la i).

Si la i o la j no están definidas como variables, puede intercalarse el signo (*).


Esto no es posible en el caso de que sí estén definidas, porque entonces se utiliza el
valor de la variable.
En general, cuando se está trabajando con números complejos, conviene no utilizar la i
como variable ordinaria, pues puede dar lugar a errores y confusiones.

>> i=2
i=
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 también la función sqrt(-1), o una variable a la que se haya asignado el
resultado de esta función.

>> 2+3*sqrt(-1)
ans =
2.0000 + 3.0000i
Asignación a vectores y matrices
La asignación 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 (*), según se muestra en el ejemplo
anterior.

Página 30 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Funciones elementales con complejos

>> Z=complex(3,4)

Z=

3.0000 + 4.0000i

>> Mod_Z=abs(Z)

Mod_Z =

>> arg_Z=angle(Z)

arg_Z =

0.9273 (en radianes)

>> conjugado_Z=conj(Z)

conjugado_Z =

3.0000 - 4.0000i

Página 31 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Casos Prácticos Resueltos

I. Graficar la función y = sin(x4), 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)')

Página 32 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
II. Graficar el círculo de centro en (-2,1) y radio 3.
x=linspace(0,2*pi,500);plot(3*cos(x)-2,3*sin(x)+1,'r*'),grid on, axis equal

III. Hacer la grafica de dos rectas, escribir en esta gráfica la solución del sistema
de ecuaciones dada por estas dos rectas
2x + 3y = 13
2x – y = 1

>> x=linspace(-10,20,200),y1=(13-2*x)/3,y2=(2*x-1),plot(x,y1,'b.',x,y2,'r.'),grid on,


legend('x=2;y=3'),axis square

Página 33 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
IV. Usando el comando plot repetidamente y apropiadamente graficar un circulo
inscrito en un triangulo y el triangulo inscrito en una circunferencia.

>>x=linspace(0,2*pi,500);x1=linspace(0,2*sqrt(3),500);x2=linspace(-2*sqrt(3),0,500);...
x3=linspace(-2*sqrt(3),2*sqrt(3),500);...
plot(4*cos(x),4*sin(x),'b.'),hold on;plot(2*cos(x),2*sin(x),'b.');...
y1=-2;y2=sqrt(3)*(x2)+4;y3=-sqrt(3)*(x1)+4;plot(x3,y1,'b.',x2,y2,'b.',x1,y3,'b.'),hold on
axis([-4.5 4.5 -4.5 4.5])
axesm miller

V. Usando el comando plot repetidamente y apropiadamente graficar la siguiente


figura

>> k1=linspace(0,2*pi,500);plot(4*cos(k1),4*sin(k1),'b.');hold on,...


x1=linspace(0,2*pi,500);plot(0.5*cos(x1)-1.5,0.5*sin(x1)+1.5,'b.');fill(0.5*cos(x1)-
1.5,0.5*sin(x1)+1.5,'c.');...
x2=linspace(0,2*pi,500);plot(0.5*cos(x2)+1.5,0.5*sin(x2)+1.5,'b.');fill(0.5*cos(x2)+1.5,0.5*
sin(x2)+1.5,'c.');...
x3=linspace(-2.5,2.5,500);y=0.240*(x3.^2)-2.5;plot(x3,y,'b.')
axis([-4.5 4.5 -4.5 4.5])
axesm miller

Página 34 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
VI. Hacer la codificación en matlab para hallar la suma de los n primeros números
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 codificación en matlab para hallar la suma de los cuadrados de los n
primeros números 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)

VIII. Hacer la codificación en matlab para calcular la suma S= 1*2+2*3+.... +n*(n+l).

>> fprintf('\t\tsuma de la serie S=1*2+2*3+3*4+...+n(n+1)\n');


n=input('ingrese el valor de n: ')
k=0;
for j=1:n
k=k+j*(j+1);
end
fprintf('suma = %7f\n',k)

IX. Calcular la suma S = 1+3 + 5 +7+ .. +(2n- l).

>> fprintf('\t\tsuma de la serie S=1+3+5+7+...+(2n-1)\n');


n=input('ingrese el valor de n: ')
k=0;
for j=1:n
k=k+(2*j-1);
end
fprintf('suma = %7f\n',k)

Página 35 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
X. Hacer la codificación en matlab para graficar y calcular el área de un rectángulo
dado la base y altura.

>> fprintf('\t\tárea 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 codificación en matlab para graficar y calcular el área de un rombo


dado sus dos diagonales.

fprintf('\t\tárea 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 codificación en matlab tal que:


Lea dos números.
El primero representará el día y mes de su nacimiento (por ejemplo 4 de diciembres
será 412).
El segundo número vendrá dado por su edad.
Luego realice los siguientes cálculos:
Multiplique el primer número por 2
Adiciónale 5
Multiplíquelo por 50
Súmele el segundo número
Súmele 365
Y réstele 615.
EI resultado vendrá a ser la unión del primer número 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

Página 36 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
PROGRAMACIÓN CON MATLAB

Introducción

Estos desarrollos pretenden servir de guía para dar los primeros pasos en la
programación con Matlab. Para aprender a programar, el lenguaje que se emplee es
(hasta cierto punto) irrelevante, lo más importante son los conceptos de lógica de
programación. Una vez conocido un lenguaje, pasar a otro no suele resultar difícil.
Como Matlab es un lenguaje simple, resulta idóneo para los comienzos.
Un programa consiste en una serie de instrucciones escritas en un lenguaje de
programación que se ejecutarán secuencialmente (una detrás de otra). Por lo tanto, es
requisito previo conocer cómo escribirlas correctamente (sintaxis).

Creando Un Programa

En Matlab existen dos tipos de ficheros *.m, los ficheros de comandos (llamados
scripts en inglés) y las funciones.

• Los SCRIPTS contienen simplemente un conjunto de comandos que se ejecutan


sucesivamente cuando se teclea el nombre del fichero en la línea 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 línea de comandos de MATLAB, las
variables que crea pertenecen al espacio de trabajo base de MATLAB y permanecen
en él cuando se termina la ejecución de dicho fichero.

• Las FUNCIONES permiten definir funciones enteramente análogas 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
través de Internet). Las funciones definidas en ficheros *.m se caracterizan porque la
primera línea (que no sea un comentario) comienza con la palabra function, seguida
por los valores de retorno (entre corchetes [ ] y separados por comas, si hay más de
uno), el signo igual (=) y el nombre de la función, seguido de los argumentos de entrada
(entre paréntesis y separados por comas).
Su estructura es la siguiente:
function [lista de valores de retorno]= name(lista de argumentos)

Ficheros De Comandos (SCRIPTS)

La elaboración 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 pondrían en la ventana de comandos y guardar el documento
con la extensión .m (por ejemplo: miprog.m). Matlab reconoce automáticamente los
ficheros que tienen extensión .m

Si en la ventana de comandos se introduce


>>miprog
las órdenes almacenadas en el fichero miprog.m se ejecutarán, una tras otra.

Página 37 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
A ese recorrido a través 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 código) 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. ¿Cuál es el
más eficiente?

Hay que ir probando para mejorar la velocidad. Con la práctica -y el estudio- se


descubren las maneras más rápidas de implementar las instrucciones entre todas las
posibles.

La confección 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 código para depurarlo,
exige una cierta disciplina.

Aunque cada uno tenga sus preferencias, es conveniente desarrollar algunos hábitos.

Hábitos De Programación

• El programa debe resultar de fácil lectura. Así, pasado el tiempo, es más 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 líneas que no se


ejecutan, en las que se escriben aclaraciones explicativas. Para que una línea no se
ejecute, basta escribir al principio de ella el símbolo %. Un programa con comentarios
es más fácil de entender.

• Suele ser bueno definir las variables al comienzo. Ello evita tener que buscarlas a
lo largo del código para cambiar su valor cuando sea necesario.

• Para ver dónde empiezan y dónde acaban los bucles y ramificaciones, es costumbre
indentar (introducir una sangría) en las líneas contenidas en ellos. Eso resulta de
especial ayuda para interpretar las estructuras repetitivas y selectivas.

Página 38 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Estructuras Condicionales (Selectivas)

Para implementar el control del flujo, son muy útiles las expresiones relacionales y
lógicas, 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 condición, como se ha indicado, sólo 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, sólo 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 lógicas se pueden realizar preguntas de


respuesta unívoca (verdadero o falso), que permitan luego tomar una decisión.

MATLAB posee un lenguaje de programación que –como cualquier otro lenguaje–


dispone de sentencias para realizar Estructuras Condicionales.

Las mismas permiten realizar una u otra operación según se cumpla o no una
determinada condición. La Figura muestra tres posibles formas de bifurcación.

SENTENCIA if

Página 39 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

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 función análoga 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 número es mayor que 5')
end

Al principio se evalúa el valor del identificador, para nuestro caso n (variable de


control), el cual debe ser un número 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.
Según 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.

Página 40 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Estructuras repetitivas (Bucles)

MATLAB posee un lenguaje de programación que –como cualquier otro lenguaje–


dispone de sentencias para realizar estructuras repetitivas o cíclicas.
Las computadoras están especialmente diseñadas para ejecutar tareas repetidamente.
Las estructuras de control repetitivas o cíclicas 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 repetición del cuerpo del bucle se denomina
iteración.

Tipos de estructuras repetitivas en Matlab:


• Sentencia Mientras

• Sentencia Para

Los bucles permiten repetir las mismas o análogas 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 condición cuando se llega al bucle por
primera vez.

Si el control está al final de la estructura las sentencias se ejecutarán por lo menos


una vez, aunque la condición no se cumpla.

Muchos lenguajes de programación disponen de bucles con control al principio (while y


for en C/C++/Java) y al final (do … while en C/C++/Java).
En MATLAB no hay bucles con control al final del bucle, es decir, no existe construcción
análoga a do ... while.
SENTENCIA while

Página 41 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
La estructura repetitiva Mientras (while para Matlab) se emplea cuando el número de
repeticiones no se conoce por anticipado y el cuerpo del bucle se repite mientras la
condición sea cierta. Por esta razón a estos bucles se les denomina bucles
[Link] la sentencia while se ejecuta, el primer paso es la evaluación de
la condición. Si se evalúa a falso, ninguna sentencia se realiza y el programa prosigue
en la siguiente sentencia después del bucle. Si la condición se evalúa a verdadera,
entonces se ejecutan las sentencias contenidas dentro del cuerpo del bucle y se evalúa
de nuevo la condición.

Seudocódigo
Mientras Condición
sentencias
fin mientras

Matlab
while Condición
sentencias
end

Regla: en ésta estructura se debe controlar una variable en la condición y que varíe en
cada iteración. Esa variación se debe producir en alguna sentencia dentro del bucle.

SENTENCIA for
En numerosas ocasiones se desea un bucle que se ejecute un número deseado de
veces, y cuyo número 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 número 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 continuación 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.

Seudocódigo
Para V=1:1:Vf
sentencias
fin Para

Matlab
for V=1:1:Vf
sentencias
end

Página 42 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 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 construcción 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
expresión 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 varía más rápidamente (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 ejecución del bucle for y/o while y se continúe con el programa
fuera del ciclo.
n=2
for i=1:10
i,a=n^i
if a>20
break
end
end

Página 43 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 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 condición 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 iteración del bucle for o while,
saltando todas las sentencias que hay entre el continue y el fin del bucle en la iteración
actual.

n=2
for i=1:10
i,a=n^i, continue
if a>20
break
end
end

COMANDOS UTILES DE PROGRAMACIÓN

% permite insertar comentarios en el programa, a partir de él, la línea


no se ejecuta)

input permite visualizar un mensaje en la línea de comandos de MATLAB


y recuperar como valor de retorno un valor numérico o el resultado
de una expresión tecleada por el usuario.

Después de mostrar el mensaje, el programa espera que el usuario teclee el valor


numérico o la expresión. Cualquier expresión válida de MATLAB es aceptada por este
comando. El usuario puede teclear simplemente un vector o una matriz. En cualquier
caso, la expresión introducida es evaluada con los valores actuales de las variables de
MATLAB y el resultado se devuelve como valor de retorno.

>> n = input('Teclee el número de ecuaciones')

En este caso el valor ingresado por el usuario se guarda en la variable [Link] posible
forma de ésta función es la siguiente (obsérvese el parámetro 's'):

>> nombre = input ('¿Cómo te llamas?','s')

En este caso el texto tecleado como respuesta se lee y se devuelve sin evaluar, con lo
que se almacena en la cadena nombre. Así pues, en este caso, si se teclea una
fórmula, se almacena como texto sin evaluarse.

disp permite visualizar en pantalla un mensaje de texto o el valor de una


matriz, pero sin imprimir su nombre.

Página 44 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
En realidad, disp siempre imprime vectores y/o matrices; las cadenas de caracteres son
un caso particular de vectores.
Considérense los siguientes ejemplos de cómo se utiliza:

>> disp('El programa ha terminado')


El programa ha terminado

Obsérvese que el texto que queremos que nos muestre Matlab, se encierra entre
apóstrofes simples.

Ejecútense las dos siguientes sentencias en MATLAB y obsérvese la diferencia entre


las dos formas de imprimir la matriz A.

>> A=rand(4,4)

>> disp(A)
0.9355 0.0579 0.1389 0.2722
0.9169 0.3529 0.2028 0.1988
0.4103 0.8132 0.1987 0.0153
0.8936 0.0099 0.6038 0.7468

fprintf permite visualizar en conjunto mensajes de texto y valores.

Su forma genérico es:

fprintf('cadena de control',var1,var2,...)

La cadena de control va encerrada entre apóstrofos simples, y contiene la cadena de


texto a visualizar y el formato de los resultados de salida a visualizar.

Algunos formatos de salida de los resultados

%s (para cadenas de caracteres)


%d (para variables enteras)
%f (para variables de punto flotante)

Ejemplo

>> R=8.7509

R=

8.7509

>> V=220.589
V=
220.5890

Página 45 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 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 caída V = 220.6 Voltios

Desglosando cada parte tenemos:

(‘....…’): entre apostrofes simples especificamos lo que queremos que se visualice


y el formato de salida del valor

6.2 y 5.1: sentencias para acotar el espacio del resultado de salida, aquí acotamos
las cantidad de espacios después del último carácter visible(para nuestro
caso el carácter =) y la cantidad de decimales que se quiere visualizar, en
el ejemplo tenemos un máximo de 6 espacios y 2 decimales para el valor
de R y de 5 espacios y 1 decimal para el valor de V.(cuando se cuentan
los espacios no se considera el espacio que ocupa el punto decimal).

Continuando con el desglose

En el caso de solo colocar este símbolo % luego del = , matlab por defecto hace la
visualización de los números sin ningún tipo de restricción.

>>fprintf('El valor es R =%f ohm y la caída V =%f Voltios\n',R,V)


El valor es R =8.750900 ohm y la caída V =220.589000 Voltios

ohm y Voltios luego del formato del espacio de salida podemos agregar mas
caracteres dentro de la sentencia fprintf, por lo general
aprovechamos para poner la unidad de medida de la variable
considerada.

\n sentencia para que luego de la visualización el prompt aparezca en


la línea inferior; de lo contrario aparece en la misma línea de la
visualización.

R,V: con esta sentencia lo que hacemos es llamar a la variables R y V


para mostrar sus valores con el formato y ordenamiento que le
asignamos en la sentencia entre apóstrofes.

Página 46 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Ejemplo de programación

Considerando un caso donde queremos diseñar 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.

Desplegamos la solapa en el menú New y elegimos la opción Script

Página 47 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
y se nos abrirá el editor de Matlab para comenzar a escribir el programa en el renglón 1.

Continuamos escribiendo en orden secuencial

Una vez escrito el programa debemos guardar el mismo en la carpeta work del
directorio Matlab, dándole un nombre al archivo con extensión .m

Para ejecutar el programa desde el workspace se teclea el nombre del archivo y luego
enter, comenzando de esa manera la ejecución del programa creado.

Página 48 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
FUNCIONES (FUNCTION) EN MATLAB

En general una función en los lenguajes de programación 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
función de Matlab.
De esta forma, el resto de las variables que se utilicen en la función serán variables
locales, con lo que no alterarán el contenido de las variables definidas en el entorno de
comandos de Matlab. Por supuesto, las funciones pueden llamarse también 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 parámetros.
Sin embargo, a diferencia de los programas, las variables que se usan dentro de una
función, no están disponibles fuera de ella, a menos que se use una declaración
explícita y que se verá mas adelante.

Declaración de una función

function [variable] = nombre (parámetros)


instrucciones

donde:
variable: contendrá el resultado que entrega la función
parámetros: son variable que reciben los datos que entran a la función
nombre: identifica a la función
instrucciones: se incluyen en la función según la tarea especificada

Las funciones se escriben en la ventana de edición de Matlab y se las almacena en


alguna carpeta. Es conveniente que el nombre asignado sea igual al nombre usado en
la declaración de la función. El uso de una función es similar al uso de las funciones
comunes de MATLAB. El nombre debe coincidir con el nombre asignado, aunque los
parámetros pueden tener nombres diferentes, pero su uso debe ser coherente.

Ejemplo. Escriba una función para elegir el mayor entre dos números
Abra un documento nuevo en la ventana de edición y escriba:

function [m] = mayor(a, b)


if a>b
m = a;
else
m = b;
end

Página 49 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
donde:
m es la variable que entrega el resultado
mayor es el nombre de la función
a, b son los parámetros que ingresan los datos a la función

Almacene esta función en el disco con el nombre mayor

Suponer que quiere escoger el mayor valor entre eπ y πe.


Escriba en la ventana de comandos:
>> a = exp(pi);
>> b = pi^exp(1);
>> m = mayor(a, b)
23.1407 (respuesta que muestra MATLAB)

Los nombres de las variables pueden ser diferentes:


>> x = exp(pi);
>> y = pi^exp(1);
>> t = mayor(x, y)
23.1407 (respuesta que muestra MATLAB)

Ejemplo. Escriba una función que reciba un número y determine si es un número primo.
El resultado que entrega la función será 1 o 0 según corresponda;

function [p] = primo( x )


c = 0;
for d = 1: x
if mod(x, d) ==0
c = c + 1;
end
end
if c > 2
p = 0;
else
p = 1;
end

Guarde la función en el disco con el nombre primo


Pruebe la función desde la ventana de comandos

>> x = 25;
>> p = primo(x)
0 (resultado que muestra MATLAB)
>> x = 43;
>> p = primo(x)
1 (resultado que muestra MATLAB)

Página 50 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Escriba en una nueva ventana de edición un programa que use la función primo para
encontrar todos los números 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 función puede entregar más de un resultado

Las variables que entregan los resultados deben definirse entre [ ]


Ej. Escriba una función 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 función con el nombre cilindro. Use la función para calcular el
área y el volumen de una lata cilíndrica que tiene un diámetro 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

Página 51 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Las variables definidas dentro de una función son locales, es decir que a
diferencia de los programas, no son visibles fuera de la función

Ej. Escriba la función:


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 función)
??? Undefined function or variable 'c'. (mensaje de error de MATLAB)

Compare con lo que ocurre si escribe un programa en vez de la función;


a = input(‘ingrese dato ‘);
b = input(‘ingrese dato ‘);
c = a + b;
x = 2*c;
disp(x);

Guarde el programa con el nombre prueba y ejecútelo:


>> prueba
ingrese dato 3 (interacción 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 función sean visibles fuera de su ámbito,
mediante la declaración global
Ej. Modifique la función 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 función:


>> a = 3;
>> b = 5;
>> t = fn(a, b)
t = 16 (resultado que muestra MATLAB)
>> c (intentamos conocer el valor de c en la función)
c=8 (la variable c está disponible ahora)

Página 52 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Una función puede no necesitar parámetros
Ej. Escriba una función 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 función puede no entregar resultados ni usar parámetros


Ej. Escriba una función que imprima un menú

function menu
disp(‘1) ingresar’);
disp(‘2) borrar’);
disp(‘3) salir’);

para usar esta función escriba


>> menu

Una función puede recibir como parámetros vectores o matrices.


Ej. Escriba una función 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 función debe definir el vector antes de llamar a la función. La función
determina la longitud del vector con la función length

>> x=[2 7 3 5 4 7 6];


>> t=prom(x)
t = 4.8571 (es el resultado que muestra MATLAB)

Una función puede entregar como resultado un vector o una matriz


Ej. Escriba una función que entregue un vector de longitud n conteniendo números
aleatorios enteros con valor entre 1 y 6:
function [d]=dados(n)
for i=1:n
d(i)=fix(rand*6+1);
end

Página 53 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Para usar esta función debe enviar un valor para el parámetro n:


>> t=dados(5)
t=63432 (es el vector resultante que entrega MATLAB)

Una función puede recibir y entregar vectores o matrices


Ej. Escriba una función que reciba dos vectores A, B y entregue un tercer vector que
contenga los elementos que están 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 función debe definir los vectores que entran. Recuerde que pueden tener
nombres diferentes a los que usa la función:
>> 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)

Página 54 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
INTERACCIÓN CON EXCEL (para versión Matlab R2007b)

MATLAB puede intercambiar datos con otros programas de Windows.

El siguiente ejercicio muestra la relación con EXCEL.

Ejemplo. Crear un fichero Excel sencillo como el de la figura siguiente ([Link]) y


guardarlo en el directorio de trabajo de MATLAB, <work>.

1) Importar datos desde la ventana Workspace


Para importar los datos de [Link] basta con abrir el Import Wizard. Para ello hacer
doble clic sobre el nombre [Link] en la ventana Current Directory y en el Import
Wizard que se abre, marcar en ella la opción Create vectors from each column using
column names, apareciendo la siguiente figura.

Donde en la ventana izquierda tenemos la posibilidad de elegir el vector zipi o zape,

Página 55 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
creados desde [Link], haciendo click sobre el nombre del vector.(en la figura se
eligió zipi)

2) Importar datos con ayuda de la función xlsread

Para importar tan sólo la matriz formada por los datos recuadrados en [Link] y
almacenarla en el workspace con el nombre “chorizo” teclear:

>> chorizo=xlsread('Libro1','A8:B10')
chorizo =
7 70
8 80
9 90

3) Exportar datos con ayuda de la función xlswrite

En primer lugar, crear la siguiente variable de tipo cell array

>> datos={'chorizo','mortadela';1 2;3 4}


datos =
'chorizo' 'mortadela'
[ 1] [ 2]
[ 3] [ 4]

Luego usar xlswrite para guardar la variable datos en un fichero [Link] en una hoja
(inexistente aún) de nombre Embutidos y a partir de la celda B2.
(Usar la ventana de Help de MATLAB para averiguar cuál es la sintaxis de uso de la
función)

Página 56 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Una vez consultada la ayuda, vemos que tenemos que teclear:

>> xlswrite('Libro2',datos,'Embutidos','B2')
Warning: Added specified worksheet.
> In xlswrite>activate_sheet at 254
In xlswrite at 212

Luego en excel abrimos desde el directorio work de Matlab el [Link] y obtenemos la


siguiente figura:

Página 57 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
SIMULINK Y SIMPOWERSYSTEMS
. (Desde la versión Matlab R2018 SIMPOWERSYSTEM se denomina SPECIALIZED POWER
SYSTEMS)

(Para ingresar a SPECIALIZED POWER SYSTEMS leer al final de éste apunte desde pág. 113)

OBJETIVOS.

Conocer una de las aplicaciones informáticas que permiten modelar, simular y analizar
sistemas eléctricos.

CONCEPTOS ACLARATORIOS

MODELAR

Modelar es una representación simplificada (modelo) de un Sistema que permite


responder interrogantes sobre este último sin recurrir a la experimentación sobre dicho
sistema.

Modelos Estáticos y Dinámicos: Los modelo estáticos no toman en cuenta la variación


del tiempo en cuanto que los modelos dinámicos si.

Una forma de clasificar modelos es en función 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 sólo pueden cambiar en determinados instantes de


tiempo. Se suelen representar mediante ecuaciones en diferencias.

SIMULAR

Simular es la acción de fingir o imitar el comportamiento de un modelo, generalmente


implementado en una computadora con el objetivo de la reproducción del
comportamiento real de un sistema para su analisis.

La simulación de un sistema, además del modelado, suele requerir la utilización de


técnicas de aproximación (métodos numéricos de integración, por ejemplo).

ANALIZAR

Analizar es distinguir y separar las partes de un todo hasta llegar a conocer sus
principios o elementos.

Página 58 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

SIMULINK (para versión Matlab R2013a)


SIMULINK es una herramienta de MATLAB para modelar, simular y analizar sistemas
dinámicos, basada en el uso de diagramas de bloques. (Un sistema dinámico es un
sistema físico 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 están desarrollados y comercializados por The
MathWorks, Inc.
• Es soportado en sistemas Windows, Unix o Macintosh
• Tiene dos fases de uso: la definición del modelo y el análisis del modelo.
1. La definición del modelo, donde se construye el modelo a partir de elementos
básicos construidos previamente, tal como integradores, bloques de ganancia,
etc..
2. El análisis del modelo, donde se realiza la simulación, linealización y
determinación del punto de equilibrio de un modelo previamente definido..
Posee
• una interfaz de usuario gráfica (GUI), con diagramas de bloques para construir los
modelos utilizando operaciones con el ratón del tipo pulsar y arrastrar.
• una amplia biblioteca de bloques propios de fuentes, componentes lineales y no
lineales, conectores, etc.
• una gran cantidad de Demos y de funciones complementarias.
• bloques de visualización que permiten ver los resultados de la simulación mientras
se está ejecutando.
Permite
• realizar simulaciones y analizar los resultados de forma gráfica.
• 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 híbridos
• personalizar y crear nuevos bloques.
• modelar en niveles jerárquicos, de forma que podemos ver un sistema desde un
nivel superior y entrando en los bloques podemos ir descendiendo a través de los
niveles para ver con más detalle el modelo.
• enviar resultados de la simulación al espacio de trabajo de MATLAB para su
posterior tratamiento.

Página 59 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Arrancar Simulink

Para acceder a SIMULINK podemos simplemente teclear en la línea de comandos de


MATLAB,
>>simulink
o también podemos acceder a través 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 librería principal de bloques:

Página 60 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Bloques propios de Simulink
Simulink dispone de numerosos bloques ya implementados, que ejecutan las funciones
de modelización más usuales. Los bloques están agrupados de acuerdo con su
comportamiento: fuentes, sumideros, discreto, continuo, no lineal, matemática, etc.
Simulink, además de los bloques propios de la librería simulink, posee un conjunto de
blocksets (juego de bloques) específicos entre los cuales está SimPowerSystems, que
contiene bloques que permiten modelar sistemas de energía eléctrica.
Simulink distingue entre las señales de los bloques propios de la librería simulink y las
señales de la librería SimPowerSystems, y no permite conectar un bloque de la librería
simulink a otro de SimPowerSystems a menos que dicho bloque tenga una entrada
apropiada.

Librería Simulink

Todos los componentes básicos de Simulink, se pueden encontrar en su biblioteca de


componentes.

A continuación se describen algunos componentes básicos de la biblioteca de Simulink.

Fuentes (Sources)
In1 proporciona un puerto de entrada para un subsistema o
modelo.
Ground conecta a tierra un puerto de entrada desconectado.
From File lee datos de un archivo.
From Workspace lee datos de una matriz definida en el workspace
Constant genera un valor constante
Signal Generator genera varias forma de onda
Signal Builder construye diferentes forma de onda
Ramp genera una señal constantemente creciente o decreciente
Sine Wave genera una onda senoidal
Step genera una función escalón
Chirp Signal genera una onda senoidal de frecuencia creciente
Clock proporciona el tiempo de simulación

Sumideros (Sinks)
Out1 proporciona un puerto de salida para un subsistema o
modelo.
Terminator termina un puerto de salida desconectado
To File escribe datos en un archivo
To Workspace escribe datos a una matriz del workspace

Página 61 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Scope presenta las señales generadas durante una simulación
XY Graph muestra un gráfico X-Y de las señales
Display muestra el valor de la entrada
Stop Simulation detiene la simulación cuando la entrada es distinta de cero

Continua (Continuous)
Integrator integra una señal
Derivative genera la derivada temporal de la entrada
State-Space implementa un sistema lineal en el espacio de estados
Transfer Fcn implementa una función de transferencia lineal
Zero-Pole implementa una función de transferencia especificada en
polos y ceros
Transport Delay retrasa la entrada un intervalo de tiempo determinado

Matemáticas (Math Operations)


Add genera la suma o resta de las entradas
Subtract genera la suma o resta de las entradas
Sum genera la suma o resta de las entradas
Sum of elements genera la suma o resta de las entradas
Divide genera el producto o cociente de las entradas
Product genera el producto o cociente de las entradas
Abs genera el valor absoluto de la entrada
Sign indica el signo de la entrada
MinMax produce el valor de entrada mínimo o máximo
Slider Gain varía una entrada usando una barra deslizante
Math Function realiza una función matemática
Rounding Function realiza una función de redondeo
Trigonometric Function realiza una función trigonométrica
Polynomial evalúa un polinomio en un punto
Magnitude-Angle to Complex convierte una señal de magnitud y/o desfase en una
señal compleja
Complex to Real-Imag obtiene las partes real e imaginaria de una señal de
entrada compleja
Real-Imag to Complex convierte la parte real e imaginaria de una señal en
una señal compleja

Operaciones lógicas (Logic and Bit Operations)


Logical Operator realiza operaciones lógicas
Relational Operator compara entradas
Interval Test determina si una señal está dentro de un intervalo
especificado
Compare To Zero compara una señal con cero
Compare To Constant compara una señal con una constante
Bit Operations trata números binarios
Detect Increase detecta incrementos en el valor de una señal
Detect Decrease detecta decrementos en el valor de una señal

Bloques no lineales (Nonlinear).

Página 62 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Dead Zone incluye una zona muerta en el sistema, centrada en
torno a cero. El sistema no responde ante estos
valores. La magnitud de la zona muerta puede ser
modificada, y echa asimétrica por medio de los
parámetros del sistema.
Relay la salida pasa al estado on=1 cuando la entrada
supera un valor umbral, y a estado off=0 cuando cae
por debajo de un umbral distinto. El estado inicial es
off.
Saturation La señal de salida no sobrepasa un valor umbral,
configurable con los parámetros del bloque.

Enrutados de las señales (Signal Routing)


Bus Creator crea un bus con señales separadas
Bus Selectortor permite seleccionar diferentes canales
Mux permite transmitir varias señales independientes por el
mismo canal
Demux permite la descomposición de una entrada con
múltiples señales en varias señales de salida
Selector selecciona elementos de entrada
Manual Switch varía la salida en función de dos entradas diferentes
Switch varía la salida en función de un criterio de selección
Goto Tag Visibility acepta la entrada de un bloque Goto
Goto define el ámbito de la etiqueta del bloque Goto

CREACIÓN DE UN MODELO
Una vez accedido a SIMULINK desde MATLAB para crear un nuevo modelo se hace

click sobre el icono New model del navegador de librerías con lo que aparece
una ventana con un espacio de trabajo en blanco, donde se añaden los diferentes
bloques que conforman el modelo.
Inserción de bloques
Un modelo en SIMULINK es una colección de bloques interconectados que representan
un sistema.
Los bloques sirven para generar, modificar, combinar y visualizar señales.
Las líneas sirven para transmitir las señales entre los bloques en la dirección de la
flecha.
El modelo que vamos a construir es el siguiente:

Página 63 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Se trata un sistema en que un bloque proporciona una onda senoidal, que es integrada.
El bloque Mux forma una señal vectorizada (uniendo las dos señales) 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 librerías:

Bloque Librería
Sine Wave (Onda senoidal) Sources
Integrador Commonly Used Blocks
Mux (Multiplexor) Commonly Used Blocks
Scope (Osciloscopio) Sinks

En la librería principal elegimos el bloque ‘Sources’, donde encontramos


las señales que podemos elegir como fuentes en nuestro modelo.

Dentro de Sources elegimos una onda senoidal:

Para situar el bloque en el documento nuevo simplemente pinchamos con el ratón y lo


arrastramos. Al soltarlo queda perfectamente situado, y la librería de fuentes queda
abierta, así que podemos dejarla minimizada o simplemente cerrarla. Para poder ver al
mismo tiempo las librerías de bloques y el modelo que estamos construyendo podemos
ajustar el tamaño de las ventanas de forma que queden bien distribuidas en la pantalla y
nos facilite el trabajo.
Una vez que hayamos situado todos los bloques del sistema, el aspecto de la pantalla
será el siguiente:

En general, las entradas de un bloque se encuentran en el lado izquierdo, con un


símbolo > apuntando al bloque. De la misma forma, las salidas se encuentran
normalmente en el lado derecho, con el símbolo > apuntando hacia fuera del bloque. Si
queremos invertir ese orden, existen varias formas de rotar el bloque (podemos hacerlo
de 90 en 90 grados en sentido contrario a las agujas del reloj o girar 180 grados de una
vez con la opción en el menú ‘Diagram → Rotate & Flip’.

Parámetros de bloques
Para parametrizar los bloques nos situamos con el ratón sobre el bloque y hacemos
doble click.
Para modificar el número de entradas en el bloque multiplexor situamos el ratón sobre el
bloque y hacemos doble click. Nos aparecerá el cuadro de diálogo siguiente:

Página 64 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Solo tenemos que cambiar el número de entradas de 2 al valor que se quiera, y aplicar
los cambios. Este es el método que se usa para cambiar los parámetros de cualquier
bloque.
Además del multiplexor, debemos definir los valores del bloque onda senoidal. Si
hacemos doble click con el ratón en el bloque Sin Wave, nos aparece el siguiente
cuadro de diálogo:

Vemos que los parámetros 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 diálogo. Para los demás bloques del modelo, no es
necesario definir ningún parámetro.

Página 65 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 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 ratón pasa de ser la típica flecha a convertirse en
una cruz. Así es como SIMULINK indica que vamos a realizar una conexión.

Cuando nos aparezca este símbolo presionamos el botón izquierdo del ratón y lo
arrastramos hasta el puerto de entrada del multiplexor. Veremos como va apareciendo
la línea de conexión, y cuando nos situemos sobre el símbolo de entrada > el puntero
volverá a cambiar de aspecto, y ahora aparecerá un triángulo sólido, para indicar que
podemos terminar la conexión. Si soltamos el botón del ratón observamos que el
extremo de la conexión que acabamos de realizar cambia para convertirse en una
flecha.

Si soltamos la conexión antes del llegar al bloque de destino, la línea se quedará


flotando sin llegar a ningún sitio, aunque podemos volver a presionar sobre ella y
alargarla hasta donde queramos.
Haremos lo mismo para conectar el bloque multiplexor al bloque Scope.

Podemos hacer líneas que partan de otras líneas y lleven su misma información, pero
no podemos insertar el contenido una línea en otra línea.
Para hacer que una línea parta de otra línea lo hacemos de la misma forma que si una
línea parte de un bloque, pero mientras picamos con el ratón en la línea debemos tener
presionada la tecla ‘CTRL’. Si nos olvidamos de presionarla, lo que haremos será mover
la línea y arrastrarla.

Para completar las conexiones, unimos la salida del integrador a la entrada libre del
multiplexor.

Página 66 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Señales Vectoriales
Antes hemos hecho referencia a que la conexión entre el multiplexor y el bloque Scope
era una señal vectorial. Una señal vectorial es la unión de varias señales. La línea de
conexión entre el multiplexor y el osciloscopio tiene que llevar las dos señales al mismo
tiempo: la onda senoidal de la que partimos, y la integración de ésta. Del multiplexor
sólo parte una línea, pero en el osciloscopio vemos representadas las dos. La mayoría
de los bloques de SIMULINK aceptan por igual las señales escalares y vectoriales. La
representación de las líneas de conexión escalares y vectoriales es idéntica. Para saber
si una señal es escalar o vectorial vamos al menú Display, Signals & Ports y marcamos
la opción Wide Nonscalar Lines (mostrar líneas vectoriales):

Vemos como el sistema nos muestra las líneas vectoriales con un trazo más ancho.

Añadir Etiquetas al sistema

Se pueden escribir anotaciones en cualquier parte del diagrama de bloques. Para


escribir una anotación sólo hay que hacer doble click con el ratón en el lugar donde
queramos que aparezca. Aparecerá un pequeño rectángulo y el cursor se transformará
en una barra vertical. Podemos escribir varias líneas presionando la tecla ‘ENTER’.
Cada línea que escribamos es automáticamente centrada en el rectángulo de escritura.
Para terminar la anotación, picamos con el ratón en cualquier otra parte de la ventana.

Podemos, por ejemplo, ponerle un título “Primer Ejemplo” a nuestro diagrama de


bloques.

Página 67 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Las etiquetas podemos moverlas a cualquier parte del dibujo arrastrándolas con el
ratón. Para cambiar el tipo y tamaño de la letra, seleccionamos la anotación y en el
menú "Format − Font" hacemos los cambio necesarios.

Etiquetas de línea

Podemos añadir etiquetas a las líneas del diagrama para hacerlo más comprensible.
Para ello hacemos doble click sobre la línea que queramos e insertamos el comentario.

Visualizar señales

Simulink dispone de varios bloques distintos para la visualización de señales. Entre


ellos en Sinks están los bloques Scope, XYGraph y Display. Nosotros utilizaremos para
este ejemplo el bloque Scope:

En nuestro ejemplo, las señales de salida que obtendremos son las siguientes:

Página 68 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

En color rosa podemos ver la señal 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 botón podemos ajustar la escala del visualizador de forma automática.


Además, pulsando el botón izquierdo del ratón y moviendolo sobre la gráfica podemos
ampliar la zona a estudiar describiendo en su movimiento un rectángulo y soltando nos
amplia dicha zona.

Con los botones actuaremos igual, pero se modificarán las escalas del eje X
(botón izquierdo) o del eje Y (botón derecho).
Con el botón accedemos al menú

Página 69 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
en el que podemos cambiar los parámetros de la gráfica como número de señales de
entrada (Number of axes), el tiempo de muestra en la gráfica (Time range en segundos),
valores en los ejes (Tick labels), como así también la muestra de los últimos puntos
calculados (History) y formato de fondos y líneas de la gráfica (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 extensión .mdl .

Imprimir un modelo

Podemos imprimir un diagrama de bloques seleccionando en el menú ‘File − Print’ o


introduciendo la orden ‘print’ en la línea de órdenes de MATLAB.
Si elegimos ‘File − Print’, se imprime el diagrama de bloques del sistema. Entre las
opciones de impresión podemos elegir imprimir sólo 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 tamaño del sistema cuando el modelo a imprimir se envía
directamente a la impresora. Si el diagrama es mayor que el tamaño de página,
SIMULINK lo reduce para que entre en la página. Para controlar el tamaño del modelo
que queremos imprimir, tenemos que hacerlo a través de un archivo eps, o capturando
pantallas en forma de bitmaps y manipulando posteriormente su tamaño mediante un
programa de procesamiento de imágenes.

PARÁMETROS DE SIMULACIÓN
Podemos simular un sistema de dos formas: mediante el menú de Simulink, o
introduciendo órdenes desde la línea 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 automáticamente una gráfica de las salidas o de las trayectorias de estado,
si no indicamos lo contrario.
- Se pueden especificar entradas externas (utilizando el parámetro ut).
- Se puede ejecutar una simulación desde un fichero-M, permitiendo que los parámetros
en los bloques se cambien iterativamente.
- La simulación se ejecuta más rápido

Desde Simulink:
- Mientras se ejecuta la simulación, se pueden cambiar los parámetros de un bloque o
cualquier parámetro de simulación, método de simulación, podemos ver la señal que
transporta cada línea, etc...

Simulación de un modelo desde SIMULINK


Si escogemos en el menú de ‘Simulation − Model Configuration Parameters’ nos
aparece un cuadro de diálogo.

Página 70 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Dentro de este cuadro nos encontramos con varias opciones. En éste tutorial
describiremos la primera opción ‘Solver’, la cual se ocupa de todo lo que se refiere al
método de resolución y la opción ‘Diagnostics’ la cual nos permite seleccionar el nivel
de los mensajes de advertencia mostrados durante la simulación.

Opción Solver

La opción Solver nos permite modificar entre otros los siguientes parámetros: tiempo de
simulación, método de integración, tamaño de pasos máximo y mínimo, márgenes de
error (tolerancia relativa y absoluta), etc:

Tiempo de simulación:
Los parámetros Start time y Stop time especifican los valores de tiempo en los que la
simulación comienza y termina. Por defecto, el tiempo inicial es de 0 sg y el tiempo final
de 10 sg, El tiempo de simulación no es tiempo real, es decir, el verdadero tiempo
empleado en una simulación no es la diferencia entre el tiempo de inicio y de
finalización, sino que dependerá de la complejidad del modelo, de los tamaños de paso
mínimo y máximo, y del ordenador con el que realicemos la simulación.

Método de integración (Solver Options):


Es el método matemático que utiliza SIMULINK para realizar la simulación de modelos.
Se hace a través de modificaciones de ecuaciones diferenciales ordinarias (ODEs).
Debido al comportamiento de los distintos sistemas dinámicos, algunos métodos pueden
ser más eficientes que otros, según el sistema de que se trate.
Podemos elegir entre métodos de paso variable (Variable-step) o de paso fijo (Fixed-
step). Los métodos de paso variable permiten modificar el tamaño del paso durante la
simulación, mientras que los de paso fijo mantienen el mismo paso durante toda la
simulación.
El paso es el tiempo o período cada cuanto se realiza la resolución matemática del
modelo.

Entre los métodos de paso variable podemos usar:


• discrete: Es el método que usa SIMULINK cuando detecta que el modelo no tiene
estados continuos.
• ode45: Para ecuaciones no demasiado complejas. Es un método de un solo paso, es
decir, para averiguar un punto sólo se basa en el calculado anteriormente. En general,
es el método más apropiado para solucionar la mayoría de los problemas. Está basado
en el método de Runge-Kutta.

Página 71 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
• ode23: Para ecuaciones no demasiado complejas. Es un método de un solo paso.
Está basado en el método de Runge-Kutta. Es más rápido pero menos preciso que el
ode45.
• ode113: Para ecuaciones no demasiado complejas. Es un método multipaso, es decir,
necesita conocer varios puntos anteriores para calcular la solución. Este es el método
variable de Adams-Bachforth-Moulton.
• ode15s: Para ecuaciones complejas. Como el método ode113, es un método de
varios pasos. Se utiliza cuando el método ode45 no es lo suficientemente eficaz.
• ode23s: Para ecuaciones complejas. Es un método de un solo paso, basado en la
fórmula modificada de Rosenbrock de orden 2, por lo que puede ser más eficaz que el
método ode15s para tolerancias no muy exigentes.
• ode23t: Para ecuaciones de dificultad media, basado en el método de regla
trapezoidal. Es muy buena alternativa para la resolución de circuitos eléctricos.

Entre los métodos de paso fijo podemos usar:


• discrete: Es un método de paso fijo que funciona sin integrar. Esta indicado para
modelos sin estados continuos.
• ode5: Es la versión de paso fijo del método ode45 (fórmula de Dormand-Prince).
• ode4: Es la fórmula de Runge-Kutta de orden 4.
• ode3: Es la versión de paso fijo del método ode23 (fórmula de Bogacki-Shampine).
• ode2: Es el método de Heun, también conocido como fórmula mejorada de Euler.
• ode1: Método de Euler.

Tamaños de paso
En los sistemas de paso variable podemos fijar el tamaño de paso máximo y sugerir el
tamaño de paso mínimo. En los sistemas de paso fijo, podemos fijar el tamaño de paso.

Paso máximo (Max Step Size): Es el mayor tiempo de paso que utiliza el método de
resolución. Por defecto, viene determinado por los tiempos de inicio y de finalización
Generalmente, el valor del paso máximo que SIMULINK toma por defecto es suficiente,
salvo que conozcamos con detalle el comportamiento del sistema.

Paso mínimo (Min Step Size): Por defecto, el método de resolución fija el tamaño de
paso inicial en relación con el tiempo de inicio de la simulación. Si nosotros fijamos el
tamaño de paso mínimo, pero no se cumple el error mínimo, SIMULINK reduce el
tamaño de paso mínimo.

Margen de error: Podemos controlar en la simulación 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 más próximo a cero.

Página 72 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Opción Diagnostics

En la pestaña de diagnósticos podemos especificar la acción que queremos que realice


SIMULINK cuando se encuentre con cualquiera de los eventos especificados, por
ejemplo, si nos encontramos con una línea sin conexión, queremos que nos de un
mensaje de advertencia:
Para cada tipo de evento, podemos elegir entre que no aparezca ningún 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 simulación, mientras que el de error sí lo hace.

MEJORA DE PRECISIÓN Y VELOCIDAD DE EJECUCIÓN EN LA SIMULACIÓN

La ejecución y precisión de una simulación puede verse afectada por varios factores,
incluyendo el diseño del modelo y la elección de los parámetros de simulación. Para la
mayoría de los modelos, los valores que presentan por defecto los métodos de
resolución (solvers) son suficientes para obtener una velocidad y precisión aceptables.
Sin embargo, algunos modelos pueden tener un mayor rendimiento si se ajustan bien
los parámetros de simulación. Asimismo, si tenemos más información sobre el
comportamiento del modelo, los resultados de la simulación pueden ser mejores.

Simulación lenta
Las causas de que la velocidad de simulación sea demasiado lenta pueden ser:

• Que el modelo incluya bloques Fcn de MATLAB. Cuando estos bloques aparecen
en un modelo, el intérprete de MATLAB es llamado en cada paso de tiempo,
haciendo la simulación mucho más lenta.
• Que el modelo incluya un archivo-M o una función-S
• Que el modelo incluya un bloque Memory. Estos bloques causan que los métodos
de resolución de orden variable (ode15s y ode113) vuelvan al orden 1 en cada paso
de tiempo.
• Que el tamaño de paso máximo sea demasiado pequeño. Si ocurre esto, prueba a

Página 73 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
repetir la simulación con el valor de paso máximo por defecto.
• Que la tolerancia absoluta sea demasiado pequeña. Normalmente, la tolerancia
por defecto suele ser suficiente.
• Que el tiempo de simulación sea demasiado grande. Prueba a reducirlo.
• Que el sistema sea un sistema "stiff" y no estemos usando un método
adecuado. Prueba a usar el método ode15s.
• Que el modelo use tiempos de muestreo que no sean múltiplos de los otros.
Esto provoca que se tomen pasos muy pequeños 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 ejecución de la
simulación.
• 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 librería de fuentes.

USO DE MÁSCARAS PARA PERSONALIZAR BLOQUES


Introducción
El enmascaramiento es una poderosa herramienta de Simulink que permite personalizar
el cuadro de diálogo y el icono de un subsistema. Con el enmascaramiento
conseguimos:
• Simplificar el manejo del modelo, reemplazando el cuadro de diálogo de cada
bloque del subsistema por uno sólo. En lugar de abrir cada bloque del modelo para
introducir el valor de los parámetros, éstos parámetros se introducen en el cuadro
de diálogo de la máscara y pasan directamente a los bloques del sistema
enmascarado.
• Usar una interfaz más fácil y descriptiva, ya que incluimos nuestra propia definición
del sistema, texto de ayuda, e incluso podemos usar nuestras propias etiquetas de
campo.
• Usar los valores de los parámetros de los bloques para definir nuevas variables.
• Crear un icono para el bloque que represente el propósito del subsistema
• Evitar modificaciones accidentales del subsistema, al ocultar su contenido bajo la
máscara.

Ejemplo de subsistema enmascarado


Para hacer un ejemplo de cómo enmascarar un subsistema, primero vamos a crear el
subsistema. Para ello, partimos de un modelo sencillo, que representará la ecuación de
una recta.
La ecuación de la recta es: r = ax + b. Para representarla, usamos una señal "x", la cual
multiplicamos por una pendiente "a". Esto lo llevamos a cabo con un bloque Gain.
Finalmente, a ese producto "ax" le sumamos una constante "b". El resultado final es
ax+b.

Página 74 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Una vez creado el modelo, para crear el subsistema seleccionamos con el ratón todos
los bloques del modelo, y en el menú Diagram seleccionamos la opción 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 ratón sobre el bloque Subsystem y vemos lo que hay en su
interior:

Página 75 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
FUNCIONES S
¿Qué es una función S?
Una Función S es una descripción de un sistema dinámico. 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
dinámicamente dentro de MATLAB cuando se necesita.
La forma de una Función S es muy general, y puede ajustarse a sistemas continuos,
discretos o híbridos. De hecho, casi todos los modelos Simulink pueden escribirse como
una Función S.
Si existe una Función 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 función.
Para insertar una Función S en un modelo de Simulink, disponemos del bloque S-
Function, que se encuentra en la librería User-Defined Functions

.
El cuadro de diálogo de una Función S es el siguiente:

Si usamos el enmascaramiento de bloques, que hemos visto anteriormente, podemos


personalizar el cuadro de diálogo y el icono de la Función S.
¿ Cuando se usa una Función S?
Para lo que más se usan la Funciones S es para crear bloques de Simulink

Página 76 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
personalizados por el usuario. Entre las aplicaciones de las Funciones S se encuentran:
• Añadir nuevos bloques de propósito general a Simulink
• Añadir código C ya existente a una Simulación
• Describir un sistema como un conjunto de ecuaciones matemáticas
• Usar animaciones gráficas
Una ventaja de usar Funciones S es que se pueden construir bloques de propósito
general que se pueden usar muchas veces en un modelo, modificando parámetros para
cada bloque en especial.

¿ Como funciona una Función S?


Cada bloque dentro de un modelo de Simulink tiene las siguientes características: un
vector de entrada, ‘u’, un vector de salida, ‘y’, y un vector de estados, ‘x’, tal como se
muestra en este esquema:

El vector de estado puede consistir en estados continuos, estados discretos o una


combinación de ambos. Los estados continuos ocupan la primera parte del vector, y los
estados discretos la segunda parte. Simulink hace repetidas llamadas a cada bloque del
modelo durante fases específicas de la simulación.
También se hacen llamadas adicionales al comienzo y final de la simulación para
realizar tareas de inicialización y finalización.

Ejercicio Modelo
a) Montar un esquema SIMULINK que conste de un generador de señales (signal
generator) y un visualizador de señal (scope). Define los parámetros de ambos
elementos, de tal forma que el generador de señal genere una onda senoidal de
amplitud la unidad y de frecuencia 2 Hertz, y el visualizador mantenga sus
parámetros por defecto. Ejecutar la simulación indicando un max step size e initial
step size a 0.01 y observar la salida en el visualizador.
b) Añade a ese esquema otro enlace compuesto por una ganancia (gain) y otro
visualizador (este se puede obtener pinchando el ratón con el botón derecho sobre
el scope que ya tenemos y, tras ello, arrastrar al lugar que queramos). Simula el
esquema dándole diferentes valores (negativos, positivos y nulo) a la ganancia.
Observa los resultados que presentan los visualizadores.
c) Implementa ahora un esquema en el que la salida que proviene directamente del
generador y la proveniente del amplificador salgan por el mismo visualizador. Para
ello ayúdate de un multiplexador de señal (mux). Obtén también la salida en una
variable llamada yout, a través de un bloque to workspace. Simula el sistema y
observa que la salida del visualizador y la correspondiente a plotear la variable yout
desde el prompt de MATLAB (comando plot(yout)) son idénticas. Comprueba las
características de la variable yout desde el entorno MATLAB. Haz uso de los
comandos grid y zoom para la visualización de la variable ploteada.

Página 77 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
SIMPOWERSYSTEMS
(Desde la versión Matlab R2018 SIMPOWERSYSTEM se denomina SPECIALIZED POWER
SYSTEMS)

(Para ingresar a SPECIALIZED POWER SYSTEMS leer al final de éste apunte desde pág. 113)
Introducción
Como habíamos visto Matlab es un entorno de programación de alto nivel que combina
el cálculo numérico y gráficos avanzados. Una de las características que más ha
contribuido a la difusión de Matlab es la posibilidad de simular casi cualquier sistema en
un entorno gráfico. Este entorno completamente integrado en Matlab, se denomina
Simulink. La gran cantidad de librerías de elementos que posee Simulink facilita el
desarrollo y simulación de sistemas de índole diversa: mecánicos, eléctricos,
hidráulicos, 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 librerías 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 construcción de modelos y la simulación de sistemas eléctricos de potencia.

En SimPowerSystems se pueden realizar simulaciones con los métodos convencionales


(en tiempo continuo y en tiempo discreto) o con el método de simulación fasorial, que es
más rápido pero se debe utilizar tomando en cuenta sus ventajas y sus limitaciones.

Ventana de librerías Simulink y ubicación de SimPowerSystems

Página 78 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

En la ventana “Simulink library browser” se encuentran entre otros los siguientes menús:
- “Nuevo”, permite crear la ventana de edición del sistema a simular.
- “SimPowerSystems>>Electrical Sources”, tiene distintos fuentes de tensión 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.

CREACIÓN 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).

Figura 3: Creación de un nuevo modelo

Sobre la zona de trabajo se van disponiendo los distintos elementos que compongan el
circuito a simular y que se extraen desde la librería de Simpowersystem. Para ello basta
con arrastrar con el ratón el elemento deseado desde la ventana de librerías hasta la
zona de trabajo en la ventana de modelo.

Página 79 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 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 botón del ratón y desplazándolo, se iniciará una
línea que podremos finalizar al soltar el botón del ratón 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 asignación de valores a los


elementos. Haciendo doble clic sobre ellos se despliega una ventana donde aparecen
las características asociadas a cada elemento. Aunque las propiedades son distintas
para cada tipo, la mayoría son bastante intuitivas y su significado se puede deducir
fácilmente.

Figura 4: Inserción y conexión de elementos

El último paso a realizar antes de la simulación consiste en configurar los parámetros de


dicha simulación. En el menú Simulation de la ventana de modelo se elige Configuration
Parameters, con lo que se abrirá la ventana mostrada en la Figura 5.

Página 80 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Figura 5: Ventana de configuración de parámetros

Los parámetros de interés para las simulaciones que se realizarán se limitan a


establecer el tiempo de inicio y finalización, así como el tipo de algoritmo a emplear. En
la simulación de circuitos eléctricos se recomienda utilizar el denominado ode23t (Mod.
stiff/Trapezoidal).

DESARROLLO DE ACTIVIDADES

Actividad 1. Análisis transitorio de un circuito de primer orden.


El circuito a simular es un circuito RL serie cuyos parámetros se muestran en la Figura
6. La fuente será de distintos tipos como se detallará más adelante.

Figura 6: Circuito RL Serie


Al construir el circuito en Simulink, debe obtenerse un modelo similar al obtenido en la
Figura 7. Los elementos se encuentran disponibles en las siguientes librerías de
Simulink y Simpowersystems:
• Dc Voltaje Source: Librería SimPowerSystems, subgrupo Electrical Sources.
• Series RLC Branch: Librería SimPowerSystems, subgrupo elements.

Página 81 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
• Ground: Librería SimPowerSystems, subgrupo elements..
• Current Measurement: : Librería SimPowerSystems subgrupo Measurement
• Scope: Librería Simulink, subgrupo Sinks.
• Continuous Powergui: Este elemento es añadido automáticamente por Simulink al
realizar la primera simulación.

Figura 7: Circuito RL Serie en Simulink


Los nombres de los elementos pueden cambiarse simplemente pulsando una sola vez
sobre ellos.
En el modelo construido sólo se ha dispuesto un elemento para medir la corriente de la
rama RL. Si se desea, pueden añadirse otros, ya sean medidores de tensión o
intensidad, simplemente conectándolos al circuito y a un visualizador tipo Scope.
Sobre este circuito realizaremos las simulaciones que se detallan a continuación:
• Circuito sin fuente con condiciones iniciales no nulas.
Asignaremos valor cero a la fuente, R=5Ω, L=0.25H y condición 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 simulación 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 extinción de
la intensidad.

• Circuito con fuente de continua.


• Cambiar el valor de la fuente a 10 V y anular las condiciones iniciales. Comparar
el tiempo que tarda el circuito en alcanzar el régimen permanente con los
obtenidos en el apartado anterior.
• Añadir condiciones iniciales a la bobina (5A) y comprobar la nueva evolución del
circuito.
• Circuito con fuente de alterna.
• Cambiar la fuente por una de alterna de 100 V, 50 Hz. Observar la respuesta del
circuito sin condiciones iniciales y con ella.

Página 82 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Actividad 2. Descarga de un condensador sobre otro.

En este apartado se analizará el transitorio que tiene lugar cuando un condensador


cargado a una cierta tensión se conecta en paralelo con otro descargado o bien cuya
tensión es diferente. Una situación como la descrita tiene lugar en el circuito de la
Figura 8. Donde el interruptor K1 se cierra en t=0 y carga el condensador C1 hasta el
instante t=0.2 seg. Posteriormente este condensador se conecta en paralelo con C2 en
t=0.5 seg.

Figura 8: Circuito de descarga de condensador sobre otro


En este circuito se desea visualizar la evolución de las tensiones de los condensadores
y la intensidad que circula desde uno a otro. Para ello se creará en Simulink un modelo
como el mostrado en la Figura 9.
Para los condensadores y resistencias se utilizarán elementos Series RLC Branch
configurándolos como tales. Los interruptores se encuentran en Librería
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 posición inicial, y los tiempos en los que se quiere que cambien de estado.

Figura 9: Modelo Simulink de descarga de un condensador sobre otro


Una vez construido el modelo se realizarán los siguientes ejercicios:
1. Visualizar la evolución de las tensiones de los condensadores, comprobando si se
cumple el principio de conservación de carga.
2. Verificar el carácter impulsional de la intensidad.
3. Cambiar el valor de la capacidad de C2 a 5mF y observar el nuevo reparto de carga
entre los condensadores.

Página 83 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
4. Con C2 de nuevo a 1mF, modificar las condiciones iniciales del condensador 2,
asignándole 25 V a su tensión. Tras realizar la simulación bajo estas condiciones,
comprobar de nuevo el principio de conservación de carga.
5. Modificar los parámetros del interruptor K1 para que sólo se cierre en t=0 y no se
abra en ningún momento. Visualizar la nueva evolución de las variables del circuito.

Actividad 3. Circuito de segundo orden


Los circuitos de segundo orden presentan diferentes tipos de respuestas según el
amortiguamiento que posean, como se pondrá de manifiesto en este apartado mediante
la simulación del siguiente circuito.

Figura 10: Circuito RLC serie


La fuente de tensión y la resistencia tomarán distintos valores como se señala a
continuación.

1. 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
tensión del condensador. La fuente de tensión será inicialmente de continua y
valor cero. La resistencia tomará valor 3Ω. Las condiciones iniciales serán:
Intensidad 3A, tensión del condensador 2V.

En estas condiciones observar el tipo de respuesta que presenta el circuito.

2. Modificar el valor de la resistencia a 2,1 y 0 Ω, sucesivamente comprobando


como cambia la forma de las respuestas del circuito.

3. 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

4. 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 acreditación de la asignatura.

Página 84 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
SIMULINK (para versión Matlab R2007b)
SIMULINK es una herramienta de MATLAB para modelar, simular y analizar sistemas
dinámicos, basada en el uso de diagramas de bloques. (Un sistema dinámico es un
sistema físico 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 están desarrollados y comercializados por The
MathWorks, Inc.
• Es soportado en sistemas Windows, Unix o Macintosh
• Tiene dos fases de uso: la definición del modelo y el análisis del modelo.
3. La definición del modelo, donde se construye el modelo a partir de elementos
básicos construidos previamente, tal como integradores, bloques de ganancia,
etc..
4. El análisis del modelo, donde se realiza la simulación, linealización y
determinación del punto de equilibrio de un modelo previamente definido..
Posee
• una interfaz de usuario gráfica (GUI), con diagramas de bloques para construir los
modelos utilizando operaciones con el ratón del tipo pulsar y arrastrar.
• una amplia biblioteca de bloques propios de fuentes, componentes lineales y no
lineales, conectores, etc.
• una gran cantidad de Demos y de funciones complementarias.
• bloques de visualización que permiten ver los resultados de la simulación mientras
se está ejecutando.
Permite
• realizar simulaciones y analizar los resultados de forma gráfica.
• 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 híbridos
• personalizar y crear nuevos bloques.
• modelar en niveles jerárquicos, de forma que podemos ver un sistema desde un
nivel superior y entrando en los bloques podemos ir descendiendo a través de los
niveles para ver con más detalle el modelo.
• enviar resultados de la simulación al espacio de trabajo de MATLAB para su
posterior tratamiento.

Página 85 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Arrancar Simulink

Para acceder a SIMULINK podemos simplemente teclear en la línea de comandos de


MATLAB,
>>simulink

o también podemos acceder a través 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 librería principal de bloques:

Bloques propios de Simulink


Simulink dispone de numerosos bloques ya implementados, que ejecutan las funciones
de modelización mas usuales. Los bloques están agrupados de acuerdo con su
comportamiento: fuentes, sumideros, discreto, continuo, no lineal, matemática, etc.

Página 86 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Simulink, además de los bloques propios de la librería simulink, posee un conjunto de
blocksets (juego de bloques) específicos entre los cuales está SimPowerSystems, que
contiene bloques que permiten modelar sistemas de energía eléctrica.
Simulink distingue entre las señales de los bloques propios de la librería simulink y las
señales de la librería SimPowerSystems, y no permite conectar un bloque de la librería
simulink a otro de SimPowerSystems a menos que dicho bloque tenga una entrada
apropiada.

Librería Simulink

Todos los componentes básicos de Simulink, se pueden encontrar en su biblioteca de


componentes.

A continuación se describen algunos componentes básicos de la biblioteca de Simulink.

Fuentes (Sources)
In1 proporciona un puerto de entrada para un subsistema o
modelo.
Ground conecta a tierra un puerto de entrada desconectado.
From File lee datos de un archivo.
From Workspace lee datos de una matriz definida en el workspace
Constant genera un valor constante
Signal Generator genera varias forma de onda
Signal Builder construye diferentes forma de onda
Ramp genera una señal constantemente creciente o decreciente
Sine Wave genera una onda senoidal
Step genera una función escalón
Chirp Signal genera una onda senoidal de frecuencia creciente
Clock proporciona el tiempo de simulación
Sumideros (Sinks)
Out1 proporciona un puerto de salida para un subsistema o
modelo.
Terminator termina un puerto de salida desconectado
To File escribe datos en un archivo
To Workspace escribe datos a una matriz del workspace
Scope presenta las señales generadas durante una simulación
XY Graph muestra un gráfico X-Y de las señales
Display muestra el valor de la entrada
Stop Simulation detiene la simulación cuando la entrada es distinta de cero

Página 87 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Continua (Continuous)
Integrator integra una señal
Derivative genera la derivada temporal de la entrada
State-Space implementa un sistema lineal en el espacio de estados
Transfer Fcn implementa una función de transferencia lineal
Zero-Pole implementa una función de transferencia especificada en
polos y ceros
Transport Delay retrasa la entrada un intervalo de tiempo determinado

Matemáticas (Math Operations)


Add genera la suma o resta de las entradas
Subtract genera la suma o resta de las entradas
Sum genera la suma o resta de las entradas
Sum of elements genera la suma o resta de las entradas
Divide genera el producto o cociente de las entradas
Product genera el producto o cociente de las entradas
Abs genera el valor absoluto de la entrada
Sign indica el signo de la entrada
MinMax produce el valor de entrada mínimo o máximo
Slider Gain varía una entrada usando una barra deslizante
Math Function realiza una función matemática
Rounding Function realiza una función de redondeo
Trigonometric Function realiza una función trigonométrica
Polynomial evalúa un polinomio en un punto
Magnitude-Angle to Complex convierte una señal de magnitud y/o desfase en una
señal compleja
Complex to Real-Imag obtiene las partes real e imaginaria de una señal de
entrada compleja
Real-Imag to Complex convierte la parte real e imaginaria de una señal en
una señal compleja

Operaciones lógicas (Logic and Bit Operations)


Logical Operator realiza operaciones lógicas
Relational Operator compara entradas
Interval Test determina si una señal está dentro de un intervalo
especificado
Compare To Zero compara una señal con cero
Compare To Constant compara una señal con una constante
Bit Operations trata números binarios
Detect Increase detecta incrementos en el valor de una señal
Detect Decrease detecta decrementos en el valor de una señal

Bloques no lineales (Nonlinear).


Dead Zone incluye una zona muerta en el sistema, centrada en
torno a cero. El sistema no responde ante estos
valores. La magnitud de la zona muerta puede ser
modificada, y echa asimétrica por medio de los
parámetros del sistema.

Página 88 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Relay la salida pasa al estado on=1 cuando la entrada
supera un valor umbral, y a estado off=0 cuando cae
por debajo de un umbral distinto. El estado inicial es
off.
Saturation La señal de salida no sobrepasa un valor umbral,
configurable con los parámetros del bloque.

Enrutados de las señales (Signal Routing)


Bus Creator crea un bus con señales separadas
Bus Selectortor permite seleccionar diferentes canales
Mux permite transmitir varias señales independientes por el
mismo canal
Demux permite la descomposición de una entrada con
múltiples señales en varias señales de salida
Selector selecciona elementos de entrada
Manual Switch varía la salida en función de dos entradas diferentes
Switch varía la salida en función de un criterio de selección
Goto Tag Visibility acepta la entrada de un bloque Goto
Goto define el ámbito de la etiqueta del bloque Goto

CREACIÓN DE UN MODELO
Una vez accedido a SIMULINK desde MATLAB para crear un nuevo modelo se hace

click sobre el icono Create a new model del navegador de librerías con lo que
aparece una ventana con un espacio de trabajo en blanco, donde se añaden los
diferentes bloques que conforman el modelo.
Inserción de bloques
Un modelo en SIMULINK es una colección de bloques interconectados que representan
un sistema.
Los bloques sirven para generar, modificar, combinar y visualizar señales.
Las líneas sirven para transmitir las señales entre los bloques en la dirección de la
flecha.
El modelo que vamos a construir es el siguiente:

Página 89 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Se trata un sistema en que un bloque proporciona una onda senoidal, que es integrada.
El bloque Mux forma una señal vectorizada (uniendo las dos señales) 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 librerías:

Bloque Librería
Sine Wave (Onda senoidal) Sources
Integrador Commonly Used Blocks
Mux (Multiplexor) Commonly Used Blocks
Scope (Osciloscopio) Sinks

En la librería principal elegimos el bloque ‘Sources’, donde encontramos


las señales que podemos elegir como fuentes en nuestro modelo.

Dentro de Sources elegimos una onda senoidal:

Para situar el bloque en el documento nuevo simplemente pinchamos con el ratón y lo


arrastramos. Al soltarlo queda perfectamente situado, y la librería de fuentes queda
abierta, así que podemos dejarla minimizada o simplemente cerrarla. Para poder ver al
mismo tiempo las librerías de bloques y el modelo que estamos construyendo podemos
ajustar el tamaño de las ventanas de forma que queden bien distribuidas en la pantalla y
nos facilite el trabajo.
Una vez que hayamos situado todos los bloques del sistema, el aspecto de la pantalla
será el siguiente:

En general, las entradas de un bloque se encuentran en el lado izquierdo, con un


símbolo > apuntando al bloque. De la misma forma, las salidas se encuentran
normalmente en el lado derecho, con el símbolo > apuntando hacia fuera del bloque. Si
queremos invertir ese orden, existen varias formas de rotar el bloque (podemos hacerlo
de 90 en 90 grados en sentido contrario a las agujas del reloj en el menú ‘Format →
Rotate Block’. También podemos girar 180 grados de una vez con la opción ‘Format →
Flip Block’).

Página 90 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Parámetros de bloques
Para parametrizar los bloques nos situamos con el ratón sobre el bloque y hacemos
doble click.
Para modificar el número de entradas en el bloque multiplexor situamos el ratón sobre el
bloque y hacemos doble click. Nos aparecerá el cuadro de diálogo siguiente:

Solo tenemos que cambiar el número de entradas de 2 al valor que se quiera, y aplicar
los cambios. Este es el método que se usa para cambiar los parámetros de cualquier
bloque.
Además del multiplexor, debemos definir los valores del bloque onda senoidal. Si
hacemos doble click con el ratón en el bloque Sin Wave, nos aparece el siguiente
cuadro de diálogo:

Vemos que los parámetros 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 diálogo. Para los demás bloques del modelo, no es
necesario definir ningún parámetro.
Conexiones entre bloques

Página 91 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
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 ratón pasa de ser la típica flecha a convertirse en
una cruz. Así es como SIMULINK indica que vamos a realizar una conexión.

Cuando nos aparezca este símbolo presionamos el botón izquierdo del ratón y lo
arrastramos hasta el puerto de entrada del multiplexor. Veremos como va apareciendo
la línea de conexión, y cuando nos situemos sobre el símbolo de entrada el puntero
volverá a cambiar de aspecto, y ahora aparecerá como una cruz doble, para indicar que
podemos terminar la conexión. Si soltamos el botón del ratón observamos que el
extremo de la conexión que acabamos de realizar cambia para convertirse en una
flecha.

Si soltamos la conexión antes del llegar al bloque de destino, la línea se quedará


flotando sin llegar a ningún sitio, aunque podemos volver a presionar sobre ella y
alargarla hasta donde queramos.
Haremos lo mismo para conectar el bloque multiplexor al bloque Scope.

Podemos hacer líneas que partan de otras líneas y lleven su misma información, pero
no podemos insertar el contenido una línea en otra línea.
Para hacer que una línea parta de otra línea lo hacemos de la misma forma que si una
línea parte de un bloque, pero mientras picamos con el ratón en la línea debemos tener
presionada la tecla ‘CTRL’. Si nos olvidamos de presionarla, lo que haremos será mover
la línea y arrastrarla.

Para completar las conexiones, unimos la salida del integrador a la entrada libre del
multiplexor.

Página 92 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Señales Vectoriales
Antes hemos hecho referencia a que la conexión entre el multiplexor y el bloque Scope
era una señal vectorial. Una señal vectorial es la unión de varias señales. La línea de
conexión entre el multiplexor y el osciloscopio tiene que llevar las dos señales al mismo
tiempo: la onda senoidal de la que partimos, y la integración de ésta. Del multiplexor
sólo parte una línea, pero en el osciloscopio vemos representadas las dos. La mayoría
de los bloques de SIMULINK aceptan por igual las señales escalares y vectoriales. La
representación de las líneas de conexión escalares y vectoriales es idéntica. Para saber
si una señal es escalar o vectorial vamos al menú y marcamos la opción de "mostrar
líneas vectoriales":

Vemos como el sistema nos muestra las líneas vectoriales con un trazo más ancho.

Añadir Etiquetas al sistema

Se pueden escribir anotaciones en cualquier parte del diagrama de bloques. Para


escribir una anotación sólo hay que hacer doble click con el ratón en el lugar donde
queramos que aparezca. Aparecerá un pequeño rectángulo y el cursor se transformará
en una barra vertical. Podemos escribir varias líneas presionando la tecla ‘ENTER’.
Cada línea que escribamos es automáticamente centrada en el rectángulo de escritura.
Para terminar la anotación, picamos con el ratón en cualquier otra parte de la ventana.

Página 93 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Podemos, por ejemplo, ponerle un título “Primer Ejemplo” a nuestro diagrama de
bloques.

Las etiquetas podemos moverlas a cualquier parte del dibujo arrastrándolas con el
ratón. Para cambiar el tipo y tamaño de la letra, seleccionamos la anotación y en el
menú "Format − Font" hacemos los cambio necesarios.

Etiquetas de línea

Podemos añadir etiquetas a las líneas del diagrama para hacerlo más comprensible.
Para ello hacemos doble click sobre la línea que queramos e insertamos el comentario.

Visualizar señales

Simulink dispone de varios bloques distintos para la visualización de señales. Entre


ellos están el bloque Scope, el bloque XYGraph y el bloque Display. Nosotros
utilizaremos para este ejemplo el bloque Scope:

Página 94 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
En nuestro ejemplo, las señales de salida que obtendremos son las siguientes:

En color rosa podemos ver la señal que genera el bloque integrador, mientras que en
color amarillo vemos la onda senoidal de la que partimos.
Con el botón podemos ajustar la escala del visualizador de forma automática.
Además, mediante el botón podemos acercar o alejar la escala de la gráfica según
pulsemos con el botón derecho del ratón (acercar), o con el izquierdo (alejar).
Con los botones y actuaremos igual, pero se modificarán las escalas del eje X
(primer botón) o del eje Y (segundo botón).
Con el botón accedemos a un menú en el que podemos cambiar la escala de los ejes
de forma exacta, dando un valor para Ymax, Ymin y X:

Finalmente, con el botón transmitimos el valor de la escala actual, al cuadro de


diálogo que acabamos de ver.

Guardar un modelo

Página 95 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

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 extensión .mdl .

Imprimir un modelo

Podemos imprimir un diagrama de bloques seleccionando en el menú ‘File − Print’ o


introduciendo la orden ‘print’ en la línea de órdenes de MATLAB.
Si elegimos ‘File − Print’, se imprime el diagrama de bloques del sistema. Entre las
opciones de impresión podemos elegir imprimir sólo 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 tamaño del sistema cuando el modelo a imprimir se envía
directamente a la impresora. Si el diagrama es mayor que el tamaño de página,
SIMULINK lo reduce para que entre en la página. Para controlar el tamaño del modelo
que queremos imprimir, tenemos que hacerlo a través de un archivo eps, o capturando
pantallas en forma de bitmaps y manipulando posteriormente su tamaño mediante un
programa de procesamiento de imágenes.

Página 96 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
PARÁMETROS DE SIMULACIÓN
Podemos simular un sistema de dos formas: mediante el menú de Simulink, o
introduciendo órdenes desde la línea 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 automáticamente una gráfica de las salidas o de las trayectorias de estado,
si no indicamos lo contrario.
- Se pueden especificar entradas externas (utilizando el parámetro ut).
- Se puede ejecutar una simulación desde un fichero-M, permitiendo que los parámetros
en los bloques se cambien iterativamente.
- La simulación se ejecuta más rápido

Desde Simulink:
- Mientras se ejecuta la simulación, se pueden cambiar los parámetros de un bloque o
cualquier parámetro de simulación, método de simulación, podemos ver la señal que
transporta cada línea, etc...

Simulación de un modelo desde SIMULINK


Si escogemos en el menú de ‘Simulation − Configuration Parameters’ nos aparece un
cuadro de diálogo.
Dentro de este cuadro nos encontramos con varias opciones. En éste tutorial
describiremos la primera opción ‘Solver’, la cual se ocupa de todo lo que se refiere al
método de resolución y la opción ‘Diagnostics’ la cual nos permite seleccionar el nivel
de los mensajes de advertencia mostrados durante la simulación.

Opción Solver

La opción Solver nos permite modificar entre otros los siguientes parámetros: tiempo de
simulación, método de integración, tamaño de pasos máximo y mínimo, márgenes de
error (tolerancia relativa y absoluta), etc:

Página 97 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Tiempo de simulación:
Los parámetros Start time y Stop time especifican los valores de tiempo en los que la
simulación comienza y termina. Por defecto, el tiempo inicial es de 0 sg y el tiempo final
de 10 sg, El tiempo de simulación no es tiempo real, es decir, el verdadero tiempo
empleado en una simulación no es la diferencia entre el tiempo de inicio y de
finalización, sino que dependerá de la complejidad del modelo, de los tamaños de paso
mínimo y máximo, y del ordenador con el que realicemos la simulación.

Método de integración (Solver Options):


Es el método matemático que utiliza SIMULINK para realizar la simulación de modelos.
Se hace a través de modificaciones de ecuaciones diferenciales ordinarias (ODEs).
Debido al comportamiento de los distintos sistemas dinámicos, algunos métodos pueden
ser más eficientes que otros, según el sistema de que se trate.
Podemos elegir entre métodos de paso variable (Variable-step) o de paso fijo (Fixed-
step). Los métodos de paso variable permiten modificar el tamaño del paso durante la
simulación, mientras que los de paso fijo mantienen el mismo paso durante toda la
simulación.
El paso es el tiempo o período cada cuanto se realiza la resolución matemática del
modelo.

Entre los métodos de paso variable podemos usar:


• ode45: Para ecuaciones no demasiado complejas. Es un método de un solo paso, es
decir, para averiguar un punto sólo se basa en el calculado anteriormente. En general,
es el método más apropiado para solucionar la mayoría de los problemas. Está basado
en el método de Runge-Kutta.
• ode23: Para ecuaciones no demasiado complejas. Es un método de un solo paso.
Está basado en el método de Runge-Kutta. Es más rápido pero menos preciso que el
ode45.
• ode113: Para ecuaciones no demasiado complejas. Es un método multipaso, es decir,
necesita conocer varios puntos anteriores para calcular la solución. Este es el método
variable de Adams-Bachforth-Moulton.
• ode15s: Para ecuaciones complejas. Como el método ode113, es un método de
varios pasos. Se utiliza cuando el método ode45 no es lo suficientemente eficaz.
• ode23s: Para ecuaciones complejas. Es un método de un solo paso, basado en la
fórmula modificada de Rosenbrock de orden 2, por lo que puede ser más eficaz que el
método ode15s para tolerancias no muy exigentes.
• ode23t: Para ecuaciones de dificultad media, basado en el método de regla
trapezoidal. Es una muy buena alternativa para la resolución de circuitos eléctricos.
• discrete: Es el método que usa SIMULINK cuando detecta que el modelo no tiene
estados continuos.

Entre los métodos de paso fijo podemos usar:


• ode5: Es la versión de paso fijo del método ode45 (fórmula de Dormand-Prince).
• ode4: Es la fórmula de Runge-Kutta de orden 4.
• ode3: Es la versión de paso fijo del método ode23 (fórmula de Bogacki-Shampine).
• ode2: Es el método de Heun, también conocido como fórmula mejorada de Euler.
• ode1: Método de Euler.
• discrete: Es un método de paso fijo que funciona sin integrar. Esta indicado para
modelos sin estados continuos.

Página 98 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Tamaños de paso
En los sistemas de paso variable podemos fijar el tamaño de paso máximo y sugerir el
tamaño de paso mínimo. En los sistemas de paso fijo, podemos fijar el tamaño de paso.
Paso máximo (Max Step Size): Es el mayor tiempo de paso que utiliza el método de
resolución. Por defecto, viene determinado por los tiempos de inicio y de finalización
Generalmente, el valor del paso máximo que SIMULINK toma por defecto es suficiente,
salvo que conozcamos con detalle el comportamiento del sistema.

Paso mínimo (Min Step Size): Por defecto, el método de resolución fija el tamaño de
paso inicial en relación con el tiempo de inicio de la simulación. Si nosotros fijamos el
tamaño de paso mínimo, pero no se cumple el error mínimo, SIMULINK reduce el
tamaño de paso mínimo.

Margen de error: Podemos controlar en la simulación 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 más próximo a cero.

Opción Diagnostics

En la pestaña de diagnósticos podemos especificar la acción que queremos que realice


SIMULINK cuando se encuentre con cualquiera de los eventos especificados, por
ejemplo, si nos encontramos con una línea sin conexión, queremos que nos de un
mensaje de advertencia:

Página 99 de 117
Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
Para cada tipo de evento, podemos elegir entre que no aparezca ningún 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 simulación, mientras que el de error sí lo hace.

MEJORA DE PRECISIÓN Y VELOCIDAD DE EJECUCIÓN EN LA SIMULACIÓN

La ejecución y precisión de una simulación puede verse afectada por varios factores,
incluyendo el diseño del modelo y la elección de los parámetros de simulación. Para la
mayoría de los modelos, los valores que presentan por defecto los métodos de
resolución (solvers) son suficientes para obtener una velocidad y precisión aceptables.
Sin embargo, algunos modelos pueden tener un mayor rendimiento si se ajustan bien
los parámetros de simulación. Asimismo, si tenemos más información sobre el
comportamiento del modelo, los resultados de la simulación pueden ser mejores.

Simulación lenta

Las causas de que la velocidad de simulación sea demasiado lenta pueden ser:

• Que el modelo incluya bloques Fcn de MATLAB. Cuando estos bloques aparecen
en un modelo, el intérprete de MATLAB es llamado en cada paso de tiempo,
haciendo la simulación mucho más lenta.
• Que el modelo incluya un archivo-M o una función-S
• Que el modelo incluya un bloque Memory. Estos bloques causan que los métodos
de resolución de orden variable (ode15s y ode113) vuelvan al orden 1 en cada paso
de tiempo.
• Que el tamaño de paso máximo sea demasiado pequeño. Si ocurre esto, prueba a
repetir la simulación con el valor de paso máximo por defecto.
• Que la tolerancia absoluta sea demasiado pequeña. Normalmente, la tolerancia
por defecto suele ser suficiente.
• Que el tiempo de simulación sea demasiado grande. Prueba a reducirlo.
• Que el sistema sea un sistema "stiff" y no estemos usando un método
adecuado. Prueba a usar el método ode15s.
• Que el modelo use tiempos de muestreo que no sean múltiplos de los otros.
Esto provoca que se tomen pasos muy pequeños 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 ejecución de la
simulación.
• 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 librería de fuentes.

Página 100 de 117


Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
USO DE MÁSCARAS PARA PERSONALIZAR BLOQUES
Introducción
El enmascaramiento es una poderosa herramienta de Simulink que permite personalizar
el cuadro de diálogo y el icono de un subsistema. Con el enmascaramiento
conseguimos:
• Simplificar el manejo del modelo, reemplazando el cuadro de diálogo de cada
bloque del subsistema por uno sólo. En lugar de abrir cada bloque del modelo para
introducir el valor de los parámetros, éstos parámetros se introducen en el cuadro
de diálogo de la máscara y pasan directamente a los bloques del sistema
enmascarado.
• Usar una interfaz más fácil y descriptiva, ya que incluimos nuestra propia definición
del sistema, texto de ayuda, e incluso podemos usar nuestras propias etiquetas de
campo.
• Usar los valores de los parámetros de los bloques para definir nuevas variables.
• Crear un icono para el bloque que represente el propósito del subsistema
• Evitar modificaciones accidentales del subsistema, al ocultar su contenido bajo la
máscara.

Ejemplo de subsistema enmascarado


Para hacer un ejemplo de cómo enmascarar un subsistema, primero vamos a crear el
subsistema. Para ello, partimos de un modelo sencillo, que representará la ecuación de
una recta.
La ecuación de la recta es: r = ax + b. Para representarla, usamos una señal "x", la cual
multiplicamos por una pendiente "a". Esto lo llevamos a cabo con un bloque Gain.
Finalmente, a ese producto "ax" le sumamos una constante "b". El resultado final es
ax+b.

Una vez creado el modelo, para crear el subsistema seleccionamos con el ratón todos
los bloques del modelo, y en el menú Edit seleccionamos la opción 'Create Subsystem':

Página 101 de 117


Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 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 ratón sobre el bloque Subsystem y vemos lo que hay en su
interior:

Página 102 de 117


Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
FUNCIONES S
¿Qué es una función S?

Una Función S es una descripción de un sistema dinámico. 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
dinámicamente dentro de MATLAB cuando se necesita.
La forma de una Función S es muy general, y puede ajustarse a sistemas continuos,
discretos o híbridos. De hecho, casi todos los modelos Simulink pueden escribirse como
una Función S.
Si existe una Función 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 función.
Para insertar una Función S en un modelo de Simulink, disponemos del bloque S-
Function, que se encuentra en la librería User-Defined Functions

El cuadro de diálogo de una Función S es el siguiente:

Si usamos el enmascaramiento de bloques, que hemos visto anteriormente, podemos


personalizar el cuadro de diálogo y el icono de la Función S.

Página 103 de 117


Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
¿ Cuando se usa una Función S?

Para lo que más se usan la Funciones S es para crear bloques de Simulink


personalizados por el usuario. Entre las aplicaciones de las Funciones S se encuentran:
• Añadir nuevos bloques de propósito general a Simulink
• Añadir código C ya existente a una Simulación
• Describir un sistema como un conjunto de ecuaciones matemáticas
• Usar animaciones gráficas
Una ventaja de usar Funciones S es que se pueden construir bloques de propósito
general que se pueden usar muchas veces en un modelo, modificando parámetros para
cada bloque en especial.
¿ Como funciona una Función S?
Cada bloque dentro de un modelo de Simulink tiene las siguientes características: un
vector de entrada, ‘u’, un vector de salida, ‘y’, y un vector de estados, ‘x’, tal como se
muestra en este esquema:

El vector de estado puede consistir en estados continuos, estados discretos o una


combinación de ambos. Los estados continuos ocupan la primera parte del vector, y los
estados discretos la segunda parte. Simulink hace repetidas llamadas a cada bloque del
modelo durante fases específicas de la simulación.
También se hacen llamadas adicionales al comienzo y final de la simulación para
realizar tareas de inicialización y finalización.

Ejercicio Modelo
d) Montar un esquema SIMULINK que conste de un generador de señales (signal
generator) y un visualizador de señal (scope). Define los parámetros de ambos
elementos, de tal forma que el generador de señal genere una onda senoidal de
amplitud la unidad y de frecuencia 2 Hertz, y el visualizador mantenga sus
parámetros por defecto. Ejecutar la simulación indicando un max step size e initial
step size a 0.01 y observar la salida en el visualizador.
e) Añade a ese esquema otro enlace compuesto por una ganancia (gain) y otro
visualizador (este se puede obtener pinchando el ratón con el botón derecho sobre
el scope que ya tenemos y, tras ello, arrastrar al lugar que queramos). Simula el
esquema dándole diferentes valores (negativos, positivos y nulo) a la ganancia.
Observa los resultados que presentan los visualizadores.
f) Implementa ahora un esquema en el que la salida que proviene directamente del
generador y la proveniente del amplificador salgan por el mismo visualizador. Para
ello ayúdate de un multiplexador de señal (mux). Obtén también la salida en una
variable llamada yout, a través de un bloque to workspace. Simula el sistema y
observa que la salida del visualizador y la correspondiente a plotear la variable yout
desde el prompt de MATLAB (comando plot(yout)) son idénticas. Comprueba las
características de la variable yout desde el entorno MATLAB. Haz uso de los
comandos grid y zoom para la visualización de la variable ploteada.

Página 104 de 117


Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
SIMPOWERSYSTEMS

Introducción

SimPowerSystems es una herramienta que se utiliza dentro del ambiente de Simulink


para la construcción de modelos y la simulación de sistemas eléctricos de potencia.
En SimPowerSystems se pueden realizar simulaciones con los métodos convencionales
(en tiempo continuo y en tiempo discreto) o con el método de simulación fasorial, que es
más rápido pero se debe utilizar tomando en cuenta sus ventajas y sus limitaciones.
Como habíamos visto Matlab es un entorno de programación de alto nivel que combina
el cálculo numérico y gráficos avanzados. Una de las características que más ha
contribuido a la difusión de Matlab es la posibilidad de simular casi cualquier sistema en
un entorno gráfico. Este entorno completamente integrado en Matlab, se denomina
Simulink. La gran cantidad de librerías de elementos que posee Simulink facilita el
desarrollo y simulación de sistemas de índole diversa: mecánicos, eléctricos,
hidráulicos, 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 librerías disponibles.

Figura 1. Pantalla inicial de Matlab

Página 105 de 117


Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Figura 2. Ventana de librerías Simulink

En la ventana “Simulink library browser” se encuentran entre otros los siguientes menús:
- “Nuevo”, permite crear la ventana de edición del sistema a simular.
- “Simulink>>Sinks”, tiene visualizadores de señales y valores como “Display”, “Scope”,
“To File”, “To Workspace”, “XY Graph”.
- “SimPowerSystems>>Connectors”, tiene elementos como “Bus bar” y “Ground”
- “SimPowerSystems>>Electrical Sources”, tiene distintos fuentes de tensión 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.

Página 106 de 117


Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
CREACIÓN 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).

Figura 3: Creación de un nuevo modelo

Sobre la zona de trabajo se van disponiendo los distintos elementos que compongan el
circuito a simular y que se extraen desde la librería de Simpowersystem. Para ello basta
con arrastrar con el ratón el elemento deseado desde la ventana de librerías hasta la
zona de trabajo en la ventana de modelo.

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 botón del ratón y desplazándolo, se iniciará una
línea que podremos finalizar al soltar el botón del ratón 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 asignación de valores a los


elementos. Haciendo doble clic sobre ellos se despliega una ventana donde aparecen
las características asociadas a cada elemento. Aunque las propiedades son distintas
para cada tipo, la mayoría son bastante intuitivas y su significado se puede deducir
fácilmente.

Página 107 de 117


Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

Figura 4: Inserción y conexión de elementos

El último paso a realizar antes de la simulación consiste en configurar los parámetros de


dicha simulación. En el menú Simulation de la ventana de modelo se elige Configuration
Parameters, con lo que se abrirá la ventana mostrada en la Figura 5.

Figura 5: Ventana de configuración de parámetros

Los parámetros de interés para las simulaciones que se realizarán se limitan a


establecer el tiempo de inicio y finalización, así como el tipo de algoritmo a emplear. En
la simulación de circuitos eléctricos se recomienda utilizar el denominado ode23t (Mod.
stiff/Trapezoidal).

Página 108 de 117


Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
DESARROLLO DE ACTIVIDADES

Actividad 1. Análisis transitorio de un circuito de primer orden.


El circuito a simular es un circuito RL serie cuyos parámetros se muestran en la Figura
6. La fuente será de distintos tipos como se detallará más adelante.

Figura 6: Circuito RL Serie


Al construir el circuito en Simulink, debe obtenerse un modelo similar al obtenido en la
Figura 7. Los elementos se encuentran disponibles en las siguientes librerías de
Simulink y Simpowersystems:
• Dc Voltaje Source: Librería SimPowerSystems, subgrupo Electrical Sources.
• Series RLC Branch: Librería SimPowerSystems, subgrupo elements.
• Ground: Librería SimPowerSystems, subgrupo elements..
• Current Measurement: : Librería SimPowerSystems subgrupo Measurement
• Scope: Librería Simulink, subgrupo Sinks.
• Continuous Powergui: Este elemento es añadido automáticamente por Simulink al
realizar la primera simulación.

Figura 7: Circuito RL Serie en Simulink


Los nombres de los elementos pueden cambiarse simplemente pulsando una sola vez
sobre ellos.

Página 109 de 117


Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
En el modelo construido sólo se ha dispuesto un elemento para medir la corriente de la
rama RL. Si se desea, pueden añadirse otros, ya sean medidores de tensión o
intensidad, simplemente conectándolos al circuito y a un visualizador tipo Scope.
Sobre este circuito realizaremos las simulaciones que se detallan a continuación:
• Circuito sin fuente con condiciones iniciales no nulas.
Asignaremos valor cero a la fuente, R=5Ω, L=0.25H y condición 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 simulación 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 extinción de
la intensidad.

• Circuito con fuente de continua.


• Cambiar el valor de la fuente a 10 V y anular las condiciones iniciales. Comparar
el tiempo que tarda el circuito en alcanzar el régimen permanente con los
obtenidos en el apartado anterior.
• Añadir condiciones iniciales a la bobina (5A) y comprobar la nueva evolución del
circuito.
• Circuito con fuente de alterna.
• Cambiar la fuente por una de alterna de 100 V, 50 Hz. Observar la respuesta del
circuito sin condiciones iniciales y con ella.

Actividad 2. Descarga de un condensador sobre otro.

En este apartado se analizará el transitorio que tiene lugar cuando un condensador


cargado a una cierta tensión se conecta en paralelo con otro descargado o bien cuya
tensión es diferente. Una situación como la descrita tiene lugar en el circuito de la
Figura 8. Donde el interruptor K1 se cierra en t=0 y carga el condensador C1 hasta el
instante t=0.2 seg. Posteriormente este condensador se conecta en paralelo con C2 en
t=0.5 seg.

Figura 8: Circuito de descarga de condensador sobre otro


En este circuito se desea visualizar la evolución de las tensiones de los condensadores
y la intensidad que circula desde uno a otro. Para ello se creará en Simulink un modelo
como el mostrado en la Figura 9.
Para los condensadores y resistencias se utilizarán elementos Series RLC Branch
configurándolos como tales. Los interruptores se encuentran en Librería

Página 110 de 117


Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 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 posición inicial, y los tiempos en los que se quiere que cambien de estado.

Figura 9: Modelo Simulink de descarga de un condensador sobre otro


Una vez construido el modelo se realizarán los siguientes ejercicios:
6. Visualizar la evolución de las tensiones de los condensadores, comprobando si se
cumple el principio de conservación de carga.
7. Verificar el carácter impulsional de la intensidad.
8. Cambiar el valor de la capacidad de C2 a 5mF y observar el nuevo reparto de carga
entre los condensadores.
9. Con C2 de nuevo a 1mF, modificar las condiciones iniciales del condensador 2,
asignándole 25 V a su tensión. Tras realizar la simulación bajo estas condiciones,
comprobar de nuevo el principio de conservación de carga.
10. Modificar los parámetros del interruptor K1 para que sólo se cierre en t=0 y no se
abra en ningún momento. Visualizar la nueva evolución de las variables del circuito.

Actividad 3. Circuito de segundo orden


Los circuitos de segundo orden presentan diferentes tipos de respuestas según el
amortiguamiento que posean, como se pondrá de manifiesto en este apartado mediante
la simulación del siguiente circuito.

Figura 10: Circuito RLC serie

Página 111 de 117


Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
La fuente de tensión y la resistencia tomarán distintos valores como se señala a
continuación.

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
tensión del condensador. La fuente de tensión será inicialmente de continua y
valor cero. La resistencia tomará valor 3Ω. Las condiciones iniciales serán:
Intensidad 3A, tensión 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.

Página 112 de 117


Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
PROCEDIMIENTO PARA INGRESAR A SIMULINK Y SPECIALIZED POWER
SYSTEMS EN MATLAB R2018 y posteriores

1. Una vez ingresado a Matlab en la pestaña HOME clickear sobre el ícono de Simulink u otra
alternativa es la de escribir simulink a continuación del prompt en el Comand Window y dar
enter.

2. Esperar que se cargue el toolbox y aparecerá una pantalla donde se debe elegir la opción
Blank Model.

Página 113 de 117


Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
3. A continuación se desplegará una hoja de trabajo para construir el modelo a simular dónde
en el menú superior y para poder contar con la librería de elementos a utilizar en el modelo,
se debe clickear la opción Library Browser

4. A continuación aparecerá la librería de Simulink y los Toolbox que trae Matlab.

Página 114 de 117


Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
5. Para trabajar solo con iconos de Simulink se deben elegir bloques de las sublibrerias de
dicho toolbox.

6. Para trabajar con bloques para modelar y simular circuitos eléctricos desplegar el menú de
Simscape, luego el menú Electrical y a continuación desplegar el menú Specialized Power
System donde se desplegará las siguientes opciones de menús:
Fundamental blocks
Control & Measurements
Electric drivers
FACTS
Renewables

Página 115 de 117


Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)
7. Clickeando la sublibrería Fundamental blocks se desplegará a la derecha una serie de
opciones que contienen distintos tipos de bloques de dónde extraer los componentes a
utilizar en el modelo a diseñar.
Entre las opciones aparecerá el bloque powergui, el cual es indispensable colocar en el
nuevo modelo a realizar.

8. Sobre la hoja de trabajo comenzar a diseñar el modelo arrastrando bloques desde las
librerías de Simulink o Specialized Power System.

9. Se hace notar que para no producir inconsistencia entre distintos bloques provenientes de
distintos toolboxes se aconseja no tomar bloques que no sean de la librería de simulink o de
Specialized Power System.

Página 116 de 117


Universidad Tecnológica Nacional-Facultad Regional Córdoba-
Cátedra: Fundamentos de Informática-Curso 1Q1 ( Ing. Eléctrica )-
Unidad Temática 5: Software de la Especialidad (año 2015)

El presente material es de lectura


obligatoria para el desarrollo de los
contenidos en el examen final de
acreditación de la asignatura.

Página 117 de 117

Common questions

Con tecnología de IA

The construction method, such as correct parameter setting and component connection, directly influences the accuracy and evolution of circuit simulations. For example, in Source 3, construction involves using Series RLC Branch elements and configuring capacitors and resistors properly to observe transient states and charge distribution. Additionally, modifying initial conditions or component values, as shown in activities detailed in Source 3, significantly affects dynamic responses and time taken to reach steady state .

S-Functions are particularly beneficial for creating user-defined blocks, integrating existing C code into simulations, representing systems with mathematical equations, and incorporating graphical animations. They allow flexible custom modeling and provide performance benefits by compiling into efficient MEX files. These features make S-Functions ideal for complex simulations requiring high customizability and integration of external code .

The charge conservation principle is validated by observing if the total charge in a system remains constant during simulations, such as a capacitor discharge scenario. By visualizing capacitor voltage transitions and measuring current flows, simulations reveal the maintenance of system charge, demonstrating conservation laws. Adjusting parameters like capacitance and initial conditions allows observing consistency in charge distribution, thus validating the principle .

The continuous Powergui element, added automatically in Simulink's power systems simulations, facilitates real-time computation of circuit properties and provides tools for initializing and visualizing electrical systems. It supports simulation of diverse power electronics systems with efficiency and offers utilities for analyzing steady-state and dynamic performance, enhancing model functionality and offering comprehensive analysis tools .

Manipulating the state vector, comprising continuous and discrete states, allows precise control over simulation behaviors and initial conditions. It enables setting and altering dynamic responses by configuring initial states or responding to feedback from simulation phases. This capability enhances model accuracy, supporting complex state-dependent simulation scenarios . The partitioning into continuous and discrete sections optimizes state handling efficiency .

Block parametrization in Simulink is handled through dialog boxes accessible by double-clicking on blocks. Users can modify parameters, such as adding inputs to a Mux, altering sine wave properties, or setting integration limits. This allows for dynamic model tweaking, enhancing the flexibility to alter simulation behavior without reconstructing models . It streamlines model customization and accommodates iterative design adjustments .

When simulating a system using MATLAB commands, you can automatically generate plots of outputs or state trajectories if not specified otherwise, change initial conditions of blocks, specify external inputs, and execute simulations faster through an M-file, allowing parameters to be changed iteratively . In Simulink, while a simulation is ongoing, you have the flexibility to change block parameters, and observe signals carried by each line .

The Solver option determines simulation parameters like start and stop times, integration methods, and error tolerances, affecting how accurately and efficiently simulations run. Diagnostics settings control warning message levels during simulations, helping identify issues by adjusting log levels . These configurations ensure the robustness of model simulation and enable fine-tuning performance and debugging .

Changing the resistance in an RLC circuit affects its damping characteristics. As shown in simulations, reducing resistance from 3Ω to 0Ω changes the circuit from underdamped to critically or overdamped, affecting current flow and capacitor voltage dynamics . Varying resistance modifies response forms, showing critical dependence of circuit behavior on resistance values .

In a Simulink model, the Sine Wave block generates sinusoidal signals, which are integrated using the Integrator block. These signals are combined into a vector using the Mux block before visualization on a Scope. The signal flow involves output from Sine Wave to Integrator, then both outputs to Mux, whose output goes to the Scope for visualization .

También podría gustarte