Documentos de Académico
Documentos de Profesional
Documentos de Cultura
de Matlab
-LCA-
Arce, Gerardo.
Clases:
8
1 Teoría – Matlab & Simulink.
3 Practica – Matlab.
3 Practica – Simulink.
1 Consulta del TPF.
Como regularizar:
Entregar todas las prácticas.
–9 de Matlab.
–5 de Simulink.
Presentarel TPF y defenderlo (individual).
Responder de 5 a 8 preguntas teóricas.
Gráficos 2D
Ajuste de curvas
Interpolación
Análisis numérico
Espacio de trabajo
Suma: +
resta: -
multiplicación: *
división: \ ó /
potencia: ^
Comentarios útiles
Números complejos
Funciones matemáticas
abs(x) Valor absoluto
acos(x) Arcocoseno
acosh(x) Arcocoseno hiperbólico
angle(x) Angulo de complejos
asin(x) Arcoseno
asinh(x) Arcoseno hiperbólico
atan(x) Arcotangente
atanh(x) Arcotangente hiperbólica
ceil(x) Redondeo hacia +
conj(x) Complejo conjugado
cos(x) Coseno
cosh(x) Coseno hiperbólico
exp(x) Exponencial e1=2.71
log (x) Logaritmo neperiano
Funciones matemáticas
fix(x) Redondeo hacia cero
floor(x) Redondeo hacia menos infinito
imag(x) Parte imaginaria compleja
log10(x) Logaritmo común
real(x) Parte real compleja
rem(x,y) Resto de la división (resto al dividir x/y)
round(x) Redondeo al entero más cercano
sign(x) Función signo
sin(x) Seno
sinh(x) Seno hiperbólico
sqrt(x) Raiz cuadrada
tan(x) Tangente
tanh(x) Tangente hiperbólica
Números complejos
Solve
– es una función que resuelve sistemas del tipo
x^3+2*x^2+3*x+x+5=0
El
número imaginario puro se representa por i
oj
– Cualquier número seguido de i representa un número
imaginario
Hay funciones específicas para su manejo:
– real(x)
– imag(x)
– conj(x)
– angle(x),, etc.
Manejo de arrays
Arrays simples
Direccionamiento de arrays
Construcción de arrays
Funciones con arrays
Matemáticas de arrays con escalares
Matemáticas entre arrays
Orientación del array
Resumen de operaciones con arrays
Arrays simples
Manipulación matricial
Matrices especiales
Álgebra matricial
Matlab originariamente fue diseñado para simplificar el
cálculo del álgebra lineal
Para definir una matriz se distinguen las filas por ; o se
introduce enter
A.’ es la matriz transpuesta de A
A’ es la traspuesta conjugada de A
det(A) calcula el determinante de A
inv(A) es la inversa de A
rank(A) devuelve el rango de la matriz A
norm(A) calcula la normal de A
poly(A) obtiene el polinomio característico de la matriz A
Manipulación matricial
Los elementos de una matriz se
indican con su fila y columna:
A(columna, fila)
Con los dos puntos (:) se puede
seleccionar toda la fila o columna:
A(:,1), B(2,:)
find(x) transforma una matriz en una
sucesión de valores del tipo columna.
size(x) devuelve el tamaño en filas y
columnas.
Matrices especiales
Matriz de ceros: zeros(n,m)
Matriz de unos: ones(n,m)
Operaciones relacionales
Operaciones lógicos
Operador Descripción
< Menor que
== Igual a
~= No igual
Operadores lógicos
Operadores lógicos:
Operador Descripción
& AND
| OR
~ NOT
Funciones relacionales y lógicas
Función Descripción
Bucle for
Bucle while
Estructuras if-else
Bucle for
La forma general es:
– for n=1:5
x(n)=n*2
end
– Los
Los comandos
comandos entre
entre las
las sentencias for y
sentencias for end se
y end se ejecutan
ejecutan una
una vez
vez
hasta
hasta llegar
llegar aa su
su fin
fin pudiendo
pudiendo también
también utilizar
utilizar una
una matriz
matriz como
como
rango
rango de
de evaluación
evaluación
– Resultado:
Resultado:
xx =
=
22
xx =
=
22 4
4
xx =
=
22 4
4 6
6
xx =
=
22 4
4 6
6 8
8
xx =
=
22 4
4 6
6 8
8 10
10
Bucle while
La forma general es:
while “expresión de veracidad”
“comandos”
end
Los“comandos” entre las
sentencias while y end se ejecutan
mientras todos los elementos a
evaluar sean verdaderos
Ejemplo de Bucle while
Resultado:
x=
»n=1; 6
n=
» while n<6 2
x=
x(n)=n*6; n=
6 12
n=n+1; x=
3
6 12 18
end; n=
4
x=
6 12 18 24
n=
5
x=
6 12 18 24 30
n=
6
Estructuras if-else-end
La forma general es:
if “expresión”
“comandos”,“resultado”
end
También
if “expresión Nº1”
“comandos Nº1”,“resultado Nº1”
elseif “expresión Nº2”
“comandos Nº2”,“resultado Nº2”
else
“comandos Nº3”,“resultado Nº3”
end
Ejemplo Estructuras if-else-end
a Tolerancia ±0.25 [Watts]
k Potencia que dicipa la recistencia [Watts]
p Potencias
a=0.25
k=1
p=1.5
if p<=k-a,s='Funciona Bien'
elseif k-a<p&p<k+a,s='Funciona en el limite'
elseif p>=k+a,s='Se Quema'
end
Polinomios
Polinomios
» x=linspace(0,2*pi,30)
» y=sin(x)
» plot(x,y)
Ejemplo de superposición de graficas
• Dibujar la función y=sin(x) y z=cos(x)
» x=linspace(0,2*pi,30)
» y=sin(x)
» z=cos(x)
» plot(x,y,x,z)
o tambien
» x=linspace(0,2*pi,30)
» y=sin(x)
» z=cos(x)
» W=[y;z]
» plot(x,W)
Tipos de líneas y colores
Colores Tipos de líneas
–y Amarillo –. Puntos
–m Magenta –o Círculos
–c Cyan –x Marcas x
–r Rojo –+ Marcas +
–g Verde –* Marcas *
–b Azul –- Línea continua
–w Blanco –: Línea punteada
–k Negro – -. Líneas y puntos
– -- Líneas discontinuas
Ejemplo de colores y linas
• Dibujar la función y=sin(x) y z=cos(x)
» x=linspace(0,2*pi,30)
» y=sin(x)
» z=cos(x)
» plot(x,y,'r*',x,z,'b:')
Añadir rejillas y etiquetas
Añadir rejillas: grid
Etiquetar eje x: xlabel(‘texto’)
BOTONES (PUSHBUTTONS)
BOTONES DE SELECCIÓN (CHECK BOXES)
TEXTO (LABEL)
BOTONES DE OPCIÓN (RADIO BUTTONS)
BARRAS DE DESPLAZAMIENTO (SCROLLING BARS O SLIDERS)
CAJAS DE SELECCIÓN DESPLEGABLES (POP-UP MENUS)
CAJAS DE TEXTO EDITABLES (EDITABLE TEXTBOXES)
MARCOS (FRAMES)
BOTONES (PUSHBUTTONS)
Funcion:
boton_calculo =
uicontrol(gcf,...
'Style','push',...
'Position',[10 10 100 25],...
'String','Calcular',...
'CallBack','a+b');
BOTONES DE SELECCIÓN (CHECK BOXES)
a=0,b=0,c=0,d=0,e=0,f=0,
a=0,b=0,c=0,d=0,e=0,f=0,
Box_01
Box_01 = = uicontrol(gcf,...
uicontrol(gcf,...
'Style','checkbox',...
'Style','checkbox',...
'Units','normalized','Position',[0.4
'Units','normalized','Position',[0.4 0.600
0.600 0.25
0.25 0.05],...
0.05],...
'String','valor
'String','valor $5',...
$5',...
'CallBack',['a=b;if
'CallBack',['a=b;if a==0,b=5;else
a==0,b=5;else a==5,b=0;end;b']);
a==5,b=0;end;b']);
Box_02
Box_02 = = uicontrol(gcf,...
uicontrol(gcf,...
'Style','checkbox',...
'Style','checkbox',...
'Units','normalized','Position',[0.4
'Units','normalized','Position',[0.4 0.550
0.550 0.25
0.25 0.05],...
0.05],...
'String','valor
'String','valor $4',...
$4',...
'CallBack',['c=d;if
'CallBack',['c=d;if c==0,d=4;else
c==0,d=4;else c==4,d=0;end;d']);
c==4,d=0;end;d']);
Box_03
Box_03 = = uicontrol(gcf,...
uicontrol(gcf,...
'Style','checkbox',...
'Style','checkbox',...
'Units','normalized','Position',[0.4
'Units','normalized','Position',[0.4 0.500
0.500 0.25
0.25 0.05],...
0.05],...
'String','valor
'String','valor $10',...
$10',...
'CallBack',['e=f;if
'CallBack',['e=f;if e==0,f=10;else
e==0,f=10;else e==10,f=0;end;f']);
e==10,f=0;end;f']);
boton_calculo
boton_calculo = = uicontrol(gcf,...
uicontrol(gcf,...
'Style','push',...
'Style','push',...
'Units','normalized','Position',[0.4
'Units','normalized','Position',[0.4 0.450
0.450 0.25
0.25 0.05],...
0.05],...
'String','Calcular',...
'String','Calcular',...
'CallBack','b+d+f');
'CallBack','b+d+f');
TEXTO (LABEL)
BOTONES DE OPCIÓN (RADIO BUTTONS)
%
% Definir
Definir elel texto
texto de
de título
título para
para este
este grupo
grupo de
de controles
controles
txt_01 = uicontrol(gcf,...
txt_01 = uicontrol(gcf,...
'Style','text','String','Tolerancia
'Style','text','String','Tolerancia dede la
la resistencia',...
resistencia',...
'Units','normalized','Position',[0.4
'Units','normalized','Position',[0.4 0.600.60 0.25
0.25 0.05]);
0.05]);
%
% Definir
Definir lala propiedad
propiedad TickDir
TickDir In
In con
con radiobutton
radiobutton (defecto)
(defecto)
tol=5
tol=5
td_5
td_5 == uicontrol(gcf,...
uicontrol(gcf,...
'Style','radio',
'Style','radio', 'String','+/-
'String','+/- 5%',...
5%',...
'Units','normalized','Position',[0.4
'Units','normalized','Position',[0.4 0.550.55 0.25
0.25 0.05],...
0.05],...
'Value',1,...
'Value',1,...
'CallBack','set(td_5,''Value'',1),set(td_10,''Value'',0),set(td_1
'CallBack','set(td_5,''Value'',1),set(td_10,''Value'',0),set(td_1
5,''Value'',0),1,0,0,tol=5');
5,''Value'',0),1,0,0,tol=5');
%
% Definir
Definir lala propiedad
propiedad TickDir
TickDir Out
Out con
con radiobutton
radiobutton
td_10
td_10 = = uicontrol(gcf,...
uicontrol(gcf,...
'Style','radio','String','+/-
'Style','radio','String','+/- 10%',...
10%',...
'Units','normalized','Position',[0.4
'Units','normalized','Position',[0.4 0.500.50 0.25
0.25 0.05],...
0.05],...
'Value',0,...
'Value',0,...
'CallBack','set(td_5,''Value'',0),set(td_10,''Value'',1),set(td_1
'CallBack','set(td_5,''Value'',0),set(td_10,''Value'',1),set(td_1
5,''Value'',0),0,1,0,tol=10');
5,''Value'',0),0,1,0,tol=10');
%
% Definir
Definir lala propiedad
propiedad TickDir
TickDir Out
Out con
con radiobutton
radiobutton
td_15
td_15 = = uicontrol(gcf,...
uicontrol(gcf,...
'Style','radio','String','+/-
'Style','radio','String','+/- 15%',...
15%',...
'Units','normalized','Position',[0.4
'Units','normalized','Position',[0.4 0.450.45 0.25
0.25 0.05],...
0.05],...
'Value',0,...
'Value',0,...
'CallBack','set(td_5,''Value'',0),set(td_10,''Value'',0),set(td_1
'CallBack','set(td_5,''Value'',0),set(td_10,''Value'',0),set(td_1
5,''Value'',1),0,0,1,tol=15');
5,''Value'',1),0,0,1,tol=15');
BARRAS DE DESPLAZAMIENTO
(SCROLLING BARS O SLIDERS)
barra_01 = uicontrol(gcf,...
'Style','slider',...
'Units','normalized','Position',[0.4 0.55 0.35
0.05],...
'Min',0,'Max',20000,'Value',5,...
'CallBack',
['a=num2str(get(barra_01,''Val''))']);
CAJAS DE SELECCIÓN
DESPLEGABLES (POP-UP MENUS)
popcol = uicontrol(gcf,...
'Style','popup',...
'String','CINCO|DIEZ|QUINCE|VEINTE',...
'Units','normalized','Position',[0.4 0.55 0.35
0.05],...
'CallBack',['pop=[5,10,15,20];',...
'a=pop(get(popcol,''Value''))']);
CAJAS DE TEXTO EDITABLES (EDITABLE TEXTBOXES)
MARCOS (FRAMES)
ft_dir
ft_dir =
= uicontrol(gcf,...
uicontrol(gcf,...
'Style','frame',...
'Style','frame',...
'Units','normalized','Position',[0.38
'Units','normalized','Position',[0.38 0.49
0.49 0.24
0.24 0.20]);
0.20]);
valor_01
valor_01 = = uicontrol(gcf,...
uicontrol(gcf,...
'Style','edit',...
'Style','edit',...
'BackgroundColor','white',...
'BackgroundColor','white',...
'FontSize',9,'FontName','Arial',...
'FontSize',9,'FontName','Arial',...
'String',[400],...
'String',[400],...
'Units','normalized','Position',[0.4
'Units','normalized','Position',[0.4 0.60
0.60 0.20
0.20 0.05],...
0.05],...
'CallBack','r=valor_01')
'CallBack','r=valor_01')
boton_calculo
boton_calculo = = uicontrol(gcf,...
uicontrol(gcf,...
'Style','push',...
'Style','push',...
'Units','normalized','Position',[0.4
'Units','normalized','Position',[0.4 0.52
0.52 0.20
0.20 0.05],...
0.05],...
'String','Calcular',...
'String','Calcular',...
'CallBack','r*3');
'CallBack','r*3');
Simulink:
Este programa se
basa en la utilización
de comandos en
sistemas de bloques,
cada bloque ejecuta
un comando
matemático.
Esta ventana muestra
las distintas galerías
donde se encuentran los
comandos de bloques.
En este curso no
profundizaremos en
todas las galerías ni en
todos los comandos ya
que por razones de
tiempo y necesidad de
uso solo utilizaremos los
sistemas de bloques más
necesarios para
Ingeniería Eléctrica.
Comenzaremos con la
galería Simulink:
La galería SOUCES:
Losbloques que
se encuentran
dentro son los
bloques de
entrada, los
generadores de
señales.
Constant
Este bloque se
utiliza para Constant value: Aquí se ingresa
ingresar la contante.
constantes.
Ingresar Signal Generator
Slope: m
Este bloque se utiliza para
Start time: cuando comienza a
generar una señal del tipo
funcionar
y = mx + h.
Initial output: h
Sine Wave
Este bloque utiliza una memoria mat Este bloque utiliza una memoria común
para guardar la señal para guardar la señal
Stop Simulation
Bloque de función
Resultado
visualizado con el
SCOPE
La galería SIGNAL & SYSTEMS:
From & GOTO
IN & OUT
Esta librería
nos proporciona
los distintos
tipos de fuentes
que necesitemos
para desarrollar
sistemas
eléctricos
básicos.
Elements:
Esta librería
nos proporciona
los distintos
tipos de
elementos tales
como
resistencias,
capacitores,
inductancias,
transformadores,
etc.
Diodos motores y medidores: