Professional Documents
Culture Documents
MANUAL DE PROGRAMACION II
MATLAB
Ing. Aquiles Aquino Rivera
Matlab es un lenguaje de alto rendimiento para cálculos técnicos, asi como también es útil
para programar y resolver problemas iterativos mediante comandos. Uno de sus puntos
fuertes es que permite construir nuestras propias herramientas reutilizables. Se puede crear
fácilmente funciones y programas especiales (conocidos como M-archivos) en código
Matlab, los cuales se pueden agrupar en Toolbox (también llamadas librerías): colección
especializada de M-archivos para trabajar en clases particulares de problemas.
Matlab, a parte del cálculo matricial y álgebra lineal, también puede manejar polinomios,
funciones, ecuaciones diferenciales ordinarias, gráficos en 2D y 3D.
Para conocer el valor que tiene una variable lo determinamos escribiendo el nombre de la
variable y pulsando Intro.
Con el Command History se visualiza las órdenes previas, se utiliza las flechas del teclado
↑ y ↓.
MATEMÁTICA SENCILLA
En Matlab se puede trabajar con las siguientes operaciones básicas:
El punto y coma (;) se utiliza para que Matlab evalúe la línea pero que no presenta la
respuesta.
al final de la sentencia.
Si la sentencia es demasiado larga para que quepa en una sola línea se digita tres puntos
(…) seguido de la tecla Intro para indicar que continúa en la línea siguiente.
Ejemplos:
>> a = 7 % da valor a la variable a y la presenta en pantalla
a =7
>> b = 4; % no presenta el valor de b por el (;) al final.
>> a + b % realiza la suma de dos variables y guarda la solución en la variable ans.
(ya que no se dio una variable a la respuesta).
ans =11
>> a / b
ans =1.7500
>> a ^ b
ans =2401
>> 5 * a
ans =35
>> who % presenta una lista de los nombres de las variables utilizadas.
Your variables are:
a ans b
>> whos % da una lista de las variables usadas más completa que la anterior.
Name Size Bytes Class Attributes
a 1x1 8 double
ans 1x1 8 double
b 1x1 8 double
AYUDA EN LÍNEA
Matlab proporciona asistencia de varios modos.
Si se quiere consultar un comando determinado se solicita información escribiendo en la
ventana de comandos help <comando a consultar>, o simplemente help. También se
puede abrir la ventana de ayuda con el ratón o con la tecla F1. Una vez abierta esta ventana
podemos buscar por contenidos, palabras concretas, demostraciones, etc.
Además con la orden lookfor <palabra>, busca en todas las primeras líneas de las ayudas
de los temas de Matlab y devuelve aquellos que contienen la palabra clave que se busaca.
APROXIMACIONES EN MATEMATICAS.-
Se tiene el siguiente ejemplo
x = 4.92
ceil (x) redondea hacia infinito 5
fix (x) redondea hacia cero 4
floor (x) redondea hacia menos infinito 4
round (x) redondea hacia el entero más próximo 5
(con x escalar, vector o matriz, se redondearía en cada caso los elemento individualmente)
Ejemplo:
>> round ( [19.54646 13.656 -2.1565 0.78] )
ans =
20 14 -2 1
TRIGONOMETRÍA.-
Sea … (x) función trigonométrica con el ángulo expresado en radianes
sin (x)
cos (x)
tan (x)
Sea …d (x) función trigonométrica con el ángulo expresado en grados sexagesimales
sind (x) seno (grados)
Sea …h (x) función trigonométrica hiperbólica con el ángulo expresado en radianes
sinh (x) seno hiperbólico (radianes).
asind (x)
Ejemplos:
>> sin (pi/2)
ans = 1
ALGUNAS OPERACIONES.-
Como ejemplo se tiene:
abs (x) valor absoluto o magnitud de un número complejo.
sign (x) signo del argumento si x es un valor real
(-1 si es negativo, 0 si es cero, 1 si es positivo).
exp (x) exponencial
gcd (m,n) máximo común divisor
lcm (m,n) mínimo común múltiplo
log (x) logaritmo neperiano o natural
log2 (x) logaritmo en base 2
log10 (x) logaritmo decimal
mod(x,y) módulo después de la división
rem (x,y) resto de la división entera
sqrt (x) raíz cuadrada
nthroot (x,n) raíz n-ésima de x
(x e y cualquier escalar, m y n enteros).
Ejemplos:
>> abs (-5) % valor absoluto de -5
ans = 5
LIMITES.-
Ejemplos:
1.- syms m
limit((4*m^3+4*m-2)/(2*m^3-6),inf) Resultado:2
2.- syms d
>> limit (((2+d)/(d^2))^(1/2),inf) resultado:0
3.- syms n
>> limit((n-1)/(sqrt(n)-1),1) resultado:2
DERIVADAS.-
diff ('f') derivada de la función respecto a x
diff ('f',t) derivada parcial de la función respecto a t
diff ('f',n) derivada n-ésima de la función respecto a x
feval ('f',a) evalúa la función en a.
Ejemplos:
1.-
> diff ('sin (7*x) ') % derivada respecto a x
ans = 7*cos(7*x)
2.-
>> diff ('(exp (x) * cos (3*x*y))','y') % derivada parcial respecto a y
ans = -3*exp(x)*sin(3*x*y)*x
3.-
>> diff ('(sin (x^2))',2) % segunda derivada respecto a x
ans = -4*sin(x^2)*x^2+2*cos(x^2)
Ejemplos:
P1(y)= 2y^4-7y^3+4y^2+2;
P2(y)=-3y^3+4y-5
» p1=[2 -7 3 0 2]
p1 = » p2=[3 0 4 -5]
2 -7 3 0 2 p2 =
3 0 4 -5
1.- » raiz1=roots(p1)
raiz1 =
2.9533
1.0000
-0.2266 + 0.5360i
-0.2266 - 0.5360i
raiz2 =
-0.4133 + 1.3586i
-0.4133 - 1.3586i
0.8265
» roots(s)
ans =
2.0946
-1.0473 + 1.1359i
-1.0473 - 1.1359i
» poly(raiz1)
ans =
» p=poly(r)
Otras Características:
PRODUCTO DE POLINOMIOS.-
» p3=conv(p1,p2)
p3 =
DIVISIÓN DE POLINOMIOS.-
» p3=deconv(p1,p2)
» e=[1 3 4];
» [c r]=deconv(d,e)
c= 4 -11
r= 0 0 14 46
O también:
3.- » [cociente,residuo]=deconv(p1,p2)
DERIVADA DE UN POLINOMIO.-
» polyder(p1)
ans = 8 -21 6 0
1.- » polyder(p2)
ans = 9 0 4
» polyder(t)
ans = 8 -3 6 5
» p=[1 -5 9];
» o=[1 2 3];
» polyder(p,o)
ans = 4 -9 4 3
» p=[1 -5 9];
» o=[1 5];
» [n d]=polyder(p,o)
n= 1 10 -34
d= 1 10 25
Matlab utiliza el método de los mínimos cuadrados, para realizar el ajuste de curvas a través de un
polinomio, para ello toma un conjunto de datos:
X 0 1 2 4 Ejemplo:
Y 1 1 7 61
» x=[0 1 2 4];
» y=[1 1 7 61];
» polyfit(x,y,3)
ans =
(polyfit=ajuste de curva),
» f=tan(x)-x^2; ∫f(x)dx
» int(f,x)
ans = -log(cos(x))-1/3*x^3
» f=y^3-sec(x); ∫ ∫ (y^3-sec(x))dxdy
» int(int(f,x),y)
ans = 1/4*y^4*x-log(sec(x)+tan(x))*y
» f=x*y^3-tan(x); ∫ ∫(xy^3-tan(x))
» int(int(f,y),x)
ans = 1/8*y^4*x^2+log(cos(x))*y
» f=6*x^2*y-z*cos(y);
» int(int(int(f,x),y),z)
ans = x^3*y^2*z-1/2*sin(y)*z^2*x
» f=exp(x)-x^2;
» int(f,x,a,b)
ans = exp(b)-1/3*b^3-exp(a)+1/3*a^3
Además:
quad(inline (f,a,b)
r = -0.4605
dblquad(inline(f,xmin,xmax,ymin,ymax)
>> =dblquad(inline('y*sin(x)+x*cos(y)'),pi,2*pi,0,pi)
p = -9.8696
ESTADÍSTICA DESCRIPTIVA.-
1.- Media.- Es el resultado de la suma de todos los valores de una variable dividida entre el numero
total de datos.
Ejemplo
Edades:25,56,48,15,47,74,28,60,59,33,54
» x=[25,56,48,15,47,74,28,60,59,33,54];
» media=mean(x)
media = 45.3636
» x=[25,56,48,15,47,74,28,60,59,33,54];
» media=mean(x);
» x=[25,56,48,15,47,74,28,60,59,33,54];
» Mediana=median(x)
Mediana = 48
Medidas de dispersión.-
1.- Varianza.- Medida de los cuadrados de los diferenciados entre cada valor de la variable y la
media aritmética.
Ejemplo:
» Varianza=var(x,1)
Varianza = 291.6860
Desviacion = 17.0788
Observación:
>>[x]=solve('3^x+3^(x-1)+3^(x-2)+3^(x-3)+3^(x-4)=363'))
>>x=5
NÚMEROS COMPLEJOS
Sobre los números complejos pueden ser aplicados las operaciones habituales presentando lo
resultados de modo exacto. Los números complejos se expresan en la forma: a+bi o a+bj.
Ejemplos:
» sqrt(-13)
ans = 0 + 3.6056i
Observación.-
2.- » z1=3+5j
z1 = 3.0000 + 5.0000i
3.- » z4=1-2i
z4 = 1.0000 - 2.0000i
» sqrt(4+5i)
» z1+z4
» z1*z4
r = -1.6000 + 2.8000i
Otra manera:
>> r=(1-5i)*(1-i)/(-1+2i)
- Funciones trigonométricas
- Funciones hiperbólicas
Ejemplo:
>> log(z1)
Ejemplos:
ans = 0.2079
» z=4i/(1+i)
z = 2.0000 + 2.0000i
f1 = 45
» modulo=abs(z)
modulo = 2.8284
3.- Sea:
» u=(3+2j)/(1-j);
» real(u),imag(u),angle(u),abs(u)
ans = 0.5000
ans = 2.5000
Ejemplos adicionales:
B= 7 8 9
4 5 6
>> sin(E)
>> exp(E)
>> log10(E)
0.6152 - 0.1064i
Problemas.-
i3+i , (1+√3i)1-i , ii
MATLAB permite trabajar distintos sistemas de coordenadas e implementar funciones para realizar
conversiones de coordenadas de un sistemas a otro.
y=r*sen θ
z=z
θ=arctan(y/x)
z=z
y= ρ*senφ*senθ
z= ρ*cosθ
θ =arctan(y/x)
Ejemplos:
x=
y=
z=
>> [x,y]=pol2cart(2,pi/4)
x=
-0.3268
y=
0.7142
Ejemplo:
a=
1 2 4
0 8 2
4 7 -5
Ejemplo:
b= 1 -9 5 8
ans = -9
ans= 8
» b(1:3)
ans= 1 -9 5
c=
-5
Para crear un arreglo en fila con valor inicial 2 que se incrementa en 0.7 hasta 5.6, se tiene:
Ejemplo:
e=
4 -8 7 5
7 0 5 -4
1 0 -2 5
7 3 6 8
2.- » e(2,3)
ans = 5
3.- » e(2,:)
ans = 7 0 5 -4
4.- » e(:,3)
ans =
-2
ans = 5 7
Operadores aritméticos de arreglos.-
» D=A+C (Adición)
D=
3 6
5 16
E=
10 5
9 13
S=
-9 4
-5 -2
M=
-18 5
0 63
F=
-15 25
0 35
div =
-0.5000 5.0000
0 0.7778
FUNCIONES PARA OPERAR CON VECTORES
cross (x,y) producto vectorial entre los vectores x e y
Ejemplos:
ans =
-3 6 -3
ans = 32
MATRIZ.
Ejemplos:
» A=B+D
A=
0 7 -3
2 13 -15
9 7 3
» A(2,3)
2.- Sustracción.-
» S=D-B
S=
2 -3 11
-2 3 -3
-1 7 -13
3.- Multiplicación.-
Ejemplos
3.1.-» M=B*D
M=
-22 2 -7
37 66 -20
» N=E*F
N=
18 32
26 -3
68 -46
Clases de Matrices.-
Ejemplo
E=
3 5 -7
1 4 -2
0 8 1
2 5 7 (filaxcolumna) (4x3)
g=
3 1 0 2
5 4 8 5
-7 -2 1 7
Se cumple:
A*I=I*A=A
Ejemplo:
Q=
6 -4 7
0 5 8
-2 6 7
Y=
algunas matrices que Matlab ya tiene predefinidas (m y n deben tomar valores naturales):
rand (n) crea una matriz cuadrada “n” de números aleatorios con distribución uniforme (0,1).
rand (m,n) crea una matriz m x n de números aleatorios con distribución uniforme (0,1).
randn (n) crea una matriz cuadrada “n” de números aleatorios con distribución normal (0,1).
randn (m,n) crea una matriz m x n de números aleatorios con distribución normal (0,1).
eye (n) crea una matriz cuadrada “n”de unos en la diagonal y ceros el resto.
magic (n) crea una matriz cuadrada “n” de enteros tal que sumen lo mismo las filas, las
columnas y diagonal.
Ejemplos:
ans = 00
00
ans = 000000
000000
ans = 1111
1111
>> rand (2,4) % matriz de valores aleatorios entre 0 y 1 según la uniforme (0,1)
ans =
ans =
01
ans = 16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Ejemplos:
A= D= C=
ans = 13
37
ans = 12
04
ans =
ans =
ans = 34
56
diag (v) crea una matriz diagonal con el vector v sobre la diagonal
Ejemplos:
>> v = [1 2 3];
>> diag (v) % crea una matriz diagonal a partir del vector v
ans = 100
020
003
>> A = [1 2 3 4; 7 8 9 2; 2 4 6 8]
A= 1234
7892
2468
ans = 1
>> size (A) % devuelve las dimensiones de la matriz como un vector fila
ans = 34
ans = 4
ans = 2
>>tril(A) =
2460
>>triu(A) =
0068
rot90 (A) gira la matriz 90º en sentido contrario a las agujas del reloj
Ejemplos:
A=
3.1416 0
0.7854 1.0472
ans =
ans =
0 1.0472
3.1416 0.7854
Ejemplos:
>> G = zeros (2,3); B = ones (2,3); (Se define dos matrices de las mismas dimensiones)
ans =
000
000
111
111
ans =
000111
000111
1. Las funciones que operan sobre escalares, como sin, cos, etc., se aplican sobre hipermatrices
elemento a elemento (igual que ocurre al aplicarlas sobre vectores y matrices).
2. Las funciones que operan sobre vectores, como sum, max, etc., se aplican a matrices e
3. Las funciones matriciales propias del álgebra lineal, como det, inv, etc., no se pueden aplicar a
hipermatrices, para aplicarlas habría que extraer las matrices correspondientes.
Grafica de Matrices:
>>x=(-9:7) ; k=x.^2;
>>plot(x,k)
Programación en Matlab.-
I. Estructura secuencial.-
Ejemplos aplicativos:
1.-
%prog para calcular el area de un circulo (Se genera en el Editor)
r=input('ing valor de radio:');
area=pi*r*r;
disp (area);
Ejercicios aplicativos:
1.- Programa para determinar la resistencia equivalente de 3 resistencias en serie y paralelo.
2.- Programa para determinar la intensidad de corriente ingresando la resistencia y el
voltaje.
Ejemplos:
Prob.1.-
%prog para hallar si un num es positivo
n=input('ing numero:');
if (n>0)
disp('num positivo');
end
Ramificaciones if / else:
Dependiendo de una condición verdadera (V) o falsa (F) el programa toma el curso
adecuado.
El resultado de una condición permite tomar una decisión, si la condición es verdadera se
ejecutan determinadas condiciones y si es falso termina el programa.
El diagrama de flujo es:
2.-
% prog para hallar el area de un rectangulo
base=input('ing base de rectangulo:');
altura=input('ing altura:');
area=(base*altura);
disp(area)
if area>=350
disp('area grande')
else
disp('area peq');
end
3.-
%utiliz function si aprob o desap
function nota=n(n)
if n>=10.5
disp('aprobado')
else
disp('desaprobado');
end
Una vez se hayan ejecutado las sentencias que correspondan (las sentencias
B si la condición es verdadera, las sentencias D en caso contrario) el
programa continúa con las instrucciones que vengan después de end.
Observación.-
Las ramificaciones se pueden anidar (una condición dentro de otra: dentro de las
sentencias B o de las sentencias D en el anterior diagrama de flujo).
Ejemplo:
1.-
%prog con intervalo para saber si aprob o desap
a=input('ingresa nota:');
if a>=0 && a<=20
if a>=10.5
disp('aprobado')
else
disp('desaprobado');
end
else
disp('nota errada')
end
Ejemplo 1.-
%prog donde ingresa un numero decimal y arroja en romanos
numero=input('ing num cambiar en romanos multiplo de 5:');
switch numero
case 5
disp('V');
case 15
disp('XV');
case 25
disp('XXV');
case 35
disp('XXV');
case 45
disp('VL')
otherwise
disp('ingreso num no mult de 5')
end
Ejemplo2.-
%prog donde ing una letra y arroja un num
nume=input('ing letra a relacionar:');
a=1;
e=2;
i=3;
o=4;
u=5;
switch nume
case a
disp('1');
case e
disp('2');
case i
disp('3');
case o
disp('4');
case u
disp('5')
otherwise
disp('ing mal')
end
Ejemplo 3.-
%programa con las condicionales
a=input('ingrese los dias transcurridos:');
if a>=1&a<=90
switch a
case a
disp('verano');
end
end
if a>=91&a<=179
switch a
case a
disp('otoño');
end
end
if a>=180&a<=270
switch a
case a
disp('invierno');
end
end
if a>=271&a<=365
switch a
case a
disp('primavera');
end
end
Ejemplo 4.-
%programa ing la nota y presenta una frase
n=input('ingrese nota:');
if(n>=16&&n<=20);
switch n
case 1
end;
disp('excelente');
elseif(n>=13&&n<=15.9);
switch n
case 2
end;
disp('bueno');
elseif(n>=10.5&&n<=12.9);
switch n
case 3
end;
disp('regular');
elseif(n>=7&&n<=10.49);
switch n
case 4
end;
disp('malo');
else
disp('nota errada');
end;
Bucles
• for
Hay ocasiones en las que es necesario repetir el mismo conjunto de instrucciones
muchas veces, cambiando algunos detalles.
Para ello se utiliza los bucles, eso es lo que se consigue con un bucle for, cuya
sintaxis es:
for contador=inicio:paso:fin,
sentencias
end
Las palabras claves son for y end. Este bucle pone en marcha una variable
llamada contador que va desde inicio hasta fin de paso en paso.
Cada vez que las sentencias se ejecutan, contador aumenta en un valor
paso (que si se omite, se le asigna automáticamente el valor 1).
Cuando contador llega al valor fin, el bucle se acaba.
Ejemplo1.-
%prog tabla de multiplicar
f=input('ingresa tabla de multiplicar del:');
for (d=1:12)
g=f*d;
disp([f d g])
end
Ejemplo 2.-
%prog calcular el factorial de un numero
s=input('ingresa valor de factorial a determinar:');
t=1;
for (i=1:s)
t=t*i;
end
disp('resulatdo del factorial es:')
disp(t)
Ejemplo3.-
%prog para ingresar n num y presenta el mayor de todos
a=input('ing cant de numeros:');
may=-1956;
for i=1:a
nro=input('ingrese numero:');
if nro>may
may=nro;
end
end
disp('el numero mayor es:');
disp(may);
Ejemplo 4.-
%programa que selecciona y da cant de numeros positivos,negativos y neutros
n=input('ingresa cantidad de numeros:');
A=[];
B=[];
C=[];
for d=1:1:n;
m=input('ingrese numero:');
if 0<m
A=[A m];
elseif m<0
B=[B m];
else
C=[C m];
end
end
disp('1.a)Los numeros positivos son:');
disp(A);
disp('1.b)La cantidad de numeros positivos son:');
disp(sum(A./A));
disp('2.a)Los numeros negativo son:');
disp(B);
disp('2.b)La cantidad de numeros negativos son:');
disp(sum(B./B));
disp('3.a)Los numeros neutros son:');
disp(C);
disp('3.b)La cantidad de numeros neutros son:'); disp(sum(C+1));
En ocasiones, sin embargo, no se sabe de antemano cuántas veces habrá que
ejecutar las sentencias del bucle. Por ejemplo: si es necesario repetir una serie de
sentencias hasta que se cumpla una determinada condición, y no se sabe a priori
cuántas veces será necesario realizar esas operaciones.
Bucle while.-
Traducido al castellano significa “mientras” ,ello se ejecuta cuando la condición es
verdadera.
Sintaxis:
while(condición),
sentencias
end
Este bucle ejecuta las sentencias mientras la condición sea verdadera.
Diagrama de flujo de bucle while
Ejemplos:
1.-
%prog para halla el factorial
n=input('ing numero a analizar:');
i=1;
f=1;
while i<=n
f=f*i;
i=i+1;
end
disp('el factorial es: ');
disp(f)
2.-
%progr para hallar el mayor
n=input('Ingrese cantidad de numeros:');
i=0;
b=-10000;
while i<n
x=input('Ingrese numero:');
i=i+1;
if x>b
b=x;
end
end
disp(b)
3.-
%prog para hallar los divisores de un num
n=input('Ingrese numero:');
i=1;
while i<=n
a=n/i;
if a==fix(a)
disp(i)
end
i=i+1;
end
4.-
%prog donde un num ingresado es primo o no
n=input('ing numero a analizar:');
i=1;
c=0;
while i<=n
if mod(n,i)==0
c=c+1;
end
i=i+1;
end
if c==2
disp('el num ing es primo');
else
disp('el num ing no es primo');
end
5.-
6.-
%prog para hallar si un numero es capicua
n=input('ingrese numero:');
i=1;
s=0;
m=n;
while fix(m)>0
r=mod(m,10);
s=(s+r)*10;
m=fix(m/10);
end
if n==(s/10)
disp('el numero es capicúa')
else
disp('el numero no es capicúa')
end
7.-
%programa para hallar la maxima y minima nota
n=input('ingrese la cant notas:');
i=0;f=0;m=20;
while i<n
x=input('ingrese nota:');
i=i+1;
if x>=0&x<=20
if x>=f;
f=x;
end
if x<=m
m=x;
end
else
disp('la nota ingresada no es valida');
end
end
disp('la nota maxima es:');disp(f);
disp('la nota minima es:');disp(m);
8.-
%programa para determinar la cifra mayor de un numero
n=input('Ingrase numero:');
h=-20;
while fix(n)>0
r=mod(n,10);
if r>h
h=r;
end
n=fix(n/10);
end
fprintf('la cifra maxima es :%f\n',h)
Simulink.-
Simulink tiene dos fases de uso: la definición del modelo y el análisis del modelo. La
definición del modelo significa construir el modelo a partir de elementos básicos
construidos previamente, tal como, integradores, bloques de ganancia o servomotores. El
análisis del modelo significa realizar la simulación, linealización y determinar el punto de
equilibrio de un modelo previamente definido.
Para simplificar la definición del modelo Simulink usa diferentes clases de ventanas
llamadas ventanas de diagramas de bloques. En estas ventanas se puede crear y editar un
modelo gráficamente usando el mouse. Simulink usa un ambiente gráfico lo que hace
sencillo la creación de los modelos de sistemas.
Después de definir un modelo este puede ser analizado seleccionando una opción desde los
menús de Simulink o entrando comandos desde la línea de comandos de MatLab.
Simulink puede simular cualquier sistema que pueda ser definido por ecuaciones
diferenciales continuas y ecuaciones diferenciales discretas. Esto significa que se puede
modelar sistemas continuos en el tiempo, discretos en el tiempo o sistemas híbridos.
Simulink usa diagramas de bloques para representar sistemas dinámicos. Mediante una
interface gráfica con el usuario se pueden arrastrar los componentes desde una librería de
bloques existentes y luego interconectarlos mediante conectores y alambre. La ventana
principal de Simulink se activa escribiendo simulink en la línea de comandos de MatLab, y
se muestra a continuación:
Haciendo doble click en cualquiera de las librerías presentes en esta ventana se abrirá otra
ventana conteniendo una cantidad de bloques relativos a dicha librería.
Para realizar un sistema debe abrirse una nueva ventana de diagrama de bloques
seleccionando la opción file del menú principal del Simulink y allí la opción new. En esta
nueva ventana se colocarán todos los bloques interconectados que formarán el sistema
deseado.
Al hacer doble click sobre cada elemento del sistema se pueden ver y modificar sus
características. Por ejemplo, al generador seno se le puede modificar su amplitud,
frecuencia y fase. Al osciloscopio se le definen las escalas horizontal y vertical.
Para ejecutar el programa se usa la opción simulation en el menú de la ventana del archivo-
m creado. En este submenú está la opción start que permite ejecutar el programa. También
está la opción parameters que activa el panel de control de Simulink en donde se definen
los métodos y parámetros usados para la simulación, tal como se muestra a continuación:
Al ejecutar el programa seno.m creado mediante simulink, se puede observar la respuesta al
hacer doble click en el osciloscopio.
Existen numerosos bloques y funciones incorporados en las librerías de simulink que
pueden ser empleados para simular cualquier sistema.
Por ejemplo, para implementar un sistema que emplea un controlador PID
Acelerador de Simulink
Para incrementar la velocidad de Simulink se debe instalar el acelerador "Accelerator". Este
permite automáticamente generar una versión mejorada de los modelos los cuales correrán
diez veces más rápido que el original. El acelerador puede ser usado sobre modelos
continuos, discretos en el tiempo y híbridos.
El acelerador trabaja generando y compilando un código-C para un modelo dado. Una vez
se completa la compilación, la simulación es ejecutada en la ventada de modelos de
Simulink exactamente igual que antes sólo que más rápidamente. El propósito del
acelerador es aumentar la velocidad de simulación.
Si el programa MatLab posee instalado el "Accelerator" podrá iniciarse la acción
aceleradora seleccionando la opción simulation en el menú principal del Simulink y dentro
de esta seleccionando la opción Accelerate. Esta acción es totalmente transparente en el
sentido de que el incremento de la velocidad se presenta sin ningún otro requerimiento por
parte del usuario.
Ejemplos aplicativos:
3+4i
Constant |u|
u 0
Complex to
Magnitude-Angle
Display
Display1
Display
Add
4
1
Constant1
Constant3 Add1
Divide1
3.-
uv
Energía Mecanica de la
-K- Central Hidroeléctrica(m^2/s^2)
8.03
50
Gravedad(m/s^2)
Potencia Generada
Altura de la caída del río(m)
Por la Hidroeléctrica (kw)
10
Producto
Flujo másico del río(Kg/s)
PARAMETROS DE ENTRADA
m
q
4
e
u
0
ro
iera F
u
lo
M
n
g
a
c
10
th
tion
la herram
3. Se ingresa un numero cualesquiera y arroja el numero de cifras
R
o
F
u
n
u
n
flo
d
c
or
in
g
tio
n
A
dd N
ume
roc
ifg
ras
C
on
sta
nt1
4.-
1
Constant
1
Divide
Constant4
3
r1
1.288
1
Divide4 Req Paralelo
Constant1
Divide1
7 Add
r2
Constant2
Divide2
5
r3
25
1
Req serie
Constant3
Add1
Divide3
10
r4
5.-
Constant
9.81
gravedad
sqrt
10
Math Scope
Ramp Gain Function
23
Subtract Abs
18
Divide
T ambiente
GRÁFICAS EN 2-D
La sentencia plot genera una gráfica en la pantalla.
Ejemplo:
>> x=0:pi/100:3*pi; //intervalo en el eje horizontal
>> y=cos(x); //Funcion a graficar
>> plot(x,y) //comando que ordena a Matlab
1
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6 7 8 9 10
Ejemplo #2.-
>> z=linspace(-pi,2.5*pi); //utilizando el linspace
>> y=sin(z);
>> plot (z,y)
Ejemplo#3.-
Al trabajar en el editor:
x=-3:0.01:3;
y=x.*exp(-x.^2);
plot(x,y),grid on //activa las cuadriculas en la pantalla.
0.5
0.4
0.3
0.2
0.1
-0.1
-0.2
-0.3
-0.4
-0.5
-3 -2 -1 0 1 2 3
Ejemplo#4.-
Grafica de color rojo y con asteriscos:
a=0:0.01:5;
b=4*a.^3;
plot(a,b,'r*')
500
450
400
350
300
250
200
150
100
50
0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6 7 8 9 10
Etiquetado de graficas.-
x=linspace(-3,3,500); y=exp(-x.^2); z=2*exp(-x.^2);
plot(x,y,'r-',x,z,'--'),grid on;
title('campana de gauss');
xlabel('eje de abscisas');
ylabel('eje de ordenandas');
legend('GRAFICOS');
campana de gauss
2
GRAFICOS
1.8
1.6
1.4
1.2
eje de ordenandas
0.8
0.6
0.4
0.2
0
-3 -2 -1 0 1 2 3
eje de abscisas
Curvas en parametricas:
Ejemplo 1.-
t=linspace (-5,5,1000);
plot((t.*(t.^2-1))./(t.^2+1),(2*(t.^2-1))./(t.^2+1));
2
1.5
0.5
-0.5
-1
-1.5
-2
-5 -4 -3 -2 -1 0 1 2 3 4 5
otra manera:
t=linspace (-5,5,1000);
comet((t.*(t.^2-1))./(t.^2+1),(2*(t.^2-1))./(t.^2+1));
ejemplo 2.-
t=linspace (0.2*pi,20);
quiver(cos(t),sin(t),-sin(t),cos(t)),axis square
Curvas en polares.-
tetha=linspace(-pi,pi,100);
r=2-4*cos(tetha);
polar(tetha,r)
90
6
120 60
150 30
180 0
210 330
240 300
270
Ejemplo #1.-
t=-1.8:0.2:4;
x=t.^3; v=abs(t); w=sqrt(t);
tetha=linspace(-pi,pi,100);
r=2-4*cos(tetha);
subplot(3,2,1),plot(t,x);
subplot(3,2,2),plot(t,v);
subplot(3,2,3),plot(t,w);
subplot(3,2,4),polar(tetha,r)
1
00 4
3
5
0
2
0
1
-
50 0
-2 -
1 0 1 2 3 4 -2 -
1 0 1 2 3 4
2 0 1
9 0
1
20 60
1
.5 5
1
50 3
0
1 1
80 0
0
.5 2
10 3
30
2
40 3
00
0 2
70
-2 -
1 0 1 2 3 4
Todas estas órdenes se las podemos dar desde la propia ventana de la gráfica una vez que
hemos
abierto las opciones con el botón indicado anteriormente.
Otros comandos relacionados con las gráficas son los siguientes:
Orden ¿Qué hace? Imagen
area colorea el area bajo la gráfica
bar diagrama de barras (verticales)
barh diagrama de barras (horizontales)
hist histograma
pie sectores
rose histograma polar
stairs gráfico de escalera
stem secuencia de datos discretos
loglog como plot pero con escala logarítmica en ambos ejes
semilogx como plot pero escala logarítmica en el eje x
semilogy como plot pero escala logarítmica en el eje y
Para obtener una información más detallada se recomienda utilizar la ayuda de Matlab:
>> help <orden>
Una ventana gráfica se puede dividir en m particiones horizontales y en n verticales, de
modo que
cada subventana tiene sus propios ejes, y para hacer esto vamos a usar subplot (m,n,p)
donde p
indica la subdivisión que se convierte en activa.
>> x = 1:360; y1 = sind (x); y2 = cosd (x); y3 = exp (x); y4 = exp (-x);
>> subplot (2,2,1), plot (x,y1), title ('seno')
>> subplot (2,2,2), plot (x,y2), title ('coseno')
>> subplot (2,2,3), plot (x,y3), title ('exponencial')
>> subplot (2,2,4), plot (x,y4), title ('-exponencial')
Manual de MATLAB Servicios Informáticos U.C.M.
33
Para volver al modo por defecto basta escribir: subplot (1,1,1).
Para dibujar polígonos podemos usar la función plot pero teniendo en cuenta que el último
punto de
ambos vectores deben coincidir para que la gráfica quede cerrada. Pero si lo que queremos
es que
quede coloreado todo el interior del polígono debemos usar mejor la función fill, tiene tres
argumentos, los dos vectores que forman los puntos y un tercer argumento para indicar el
color.
>> x = [-2 0 2 0 -2]; y = [4 8 4 0 4];
>> plot (x,y)
>> x = [-2 0 2 0 -2]; y = [4 8 4 0 4];
>> fill (x,y,'r') % dibuja el polígono, 'r' indica el color rojo.
GRÁFICAS EN 3-D
Gráficos de línea:
También podemos crear gráficas en 3 dimensiones, se trata de extender la orden de plot (2-
D) a plot3
(3-D) donde el formato será igual pero los datos estarán en tripletes:
Manual de MATLAB Servicios Informáticos U.C.M.
34
>> x = -720:720; y = sind (x); z = cosd (x);
>> plot3 (x,y,z)
Podemos hacer girar la gráfica usando de la barra de herramientas el botón o hacerla más
grande o
más pequeña con . Al igual que ocurría con las gráficas en dos dimensiones podemos
nombrar
los ejes o hacer modificaciones entrando en opciones con el botón .
Si queremos representar un polígono en 3 dimensiones lo haremos con la función fill3 de
forma
similar a fill pero ahora con 4 argumentos, siendo el cuarto el que indica el color.
>> x = [-2 0 2 0 -2];
>> y = [4 8 4 0 4];
>> z = [3 5 10 5 3];
>> fill3 (x,y,z,'b') % dibuja en 3-D, 'b' indica el color azul
Superficie de malla:
La orden [X,Y]=meshgrid(x,y) crea una matriz X cuyas filas son copias del vector x y una
matriz Y
cuyas columnas son copias del vector y. Para generar la gráfica de malla se usa la orden
mesh(X,Y,Z), mesh acepta un argumento opcional para controlar los colores. También
puede tomar
una matriz simple como argumento: mesh(Z).
Ejemplo:
>> x = -10:0.5:10; y = -10:0.5:10;
>> [X,Y] = meshgrid (x,y); % crea matrices para hacer la malla
>> Z = sin (sqrt (X .^2 + Y .^2)) ./ sqrt (X .^ 2 + Y .^ 2 + 0.1);
>> mesh (X,Y,Z) % dibuja la gráfica
Hubiera dado igual si hubiéramos escrito:
>> [X,Y] = meshgrid (-10:0.5:10);
>> Z = sin (sqrt (X .^2 + Y .^ 2)) ./ sqrt (X .^ 2 + Y .^ 2 + 0.1);
>> mesh (X,Y,Z)
Gráfica de superficie:
Es similar a la gráfica de malla, pero aquí se rellenan los espacios entre líneas. La orden
que usamos
es surf con los mismos argumentos que para mesh.
Ejemplo:
>> surf (X,Y,Z)
Las gráficas de contorno en 2-D y 3-D se generan usando respectivamente las funciones
contour y
contour3.
Ejemplo:
>> contour (X,Y,Z) % dibuja las líneas de contorno
La función pcolor transforma la altura a un conjunto de colores.
Ejemplo:
>> pcolor (X,Y,Z)
Manipulación de gráficos:
fija el ángulo de visión especificando el azimut y la elevación: >> view(az,el)
coloca su vista en un vector de coordenada cartesiana (x,y,z) en el espacio 3-D: >>
view([x,y,z])
almacena en az y el los valores del azimut y de la elevación de la vista actual: >>
[az,el]=view
añade etiquetas de altura a los gráficos de contorno: >> clabel(C,h)
añade una barra de color vertical mostrando las transformaciones: >> colorbar
Ejemplos:
>> surf (X,Y,Z)
>> view (10,70)
>> colorbar % añade la barra de color a la figura actual
>> surf (X,Y,Z)
>> view ( [10,-12,2] )
>> surf (X,Y,Z)
>> [az,el] = view
az =
-37.5000
el =
30
>> [C,h] = contour (X,Y,Z);
>> clabel (C,h)
Comprensión de los mapas de color:
Color Nombre corto Rojo/Verde/Azul
Negro k [0 0 0]
Blanco w [1 1 1]
Rojo r [1 0 0]
Verde g [0 1 0]
Azul b [0 0 1]
Amarillo y [1 1 0]
Magenta m [1 0 1]