introduccion al matlab para control 2 parte

51
7/18/2019 Introduccion al Matlab para Control 2 parte http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 1/51 MAG. LUIS ENCISO Programación en Matlab: Métodos y Funciones Maestría en Ingeniería de Control y Automatización 2015-2

Upload: elmer-calle

Post on 10-Jan-2016

232 views

Category:

Documents


1 download

DESCRIPTION

Introduccion al Matlab para Control 2 parte

TRANSCRIPT

Page 1: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 1/51

M A G . L U I S E N C I S O

Programación en Matlab:

Métodos y Funciones

Maestría en Ingeniería de Control y Automatización

2015-2

Page 2: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 2/51

Contenido

Operadores

Creación de M-Files (scripts, funciones, clases)

Control de flujo de ejecución: if, else if , else, for,

 while, switch case. Funciones inline

 Aplicaciones

Page 3: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 3/51

Objetivos

Reconocer las estructuras de programación enMatlab.

Desarrollar funciones y scripts en Matlab para la

resolución de problemas en ingeniería.

Page 4: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 4/51

Operadores

Dos tipos de operadores: 1) De Relación, 2) Lógicos

1) Operadores de Relación:

Comparan dos números, el resultado esperado es un

true(1) o false(0) Operador igual a (==) : >> 8==(-16/-2) % true

>> 0==sin(pi) % false?

Operador no igual a (~=) : >> int16(‘c’)=~99 % false

Operador Mayor que (>) : >> 10>sqrt(101) % false

Operador Mayor o igual (>=): >> 9>=9 % true Operador Menor que (<) : >> -1<1 % true

Operador Menor o igual (<=): >> 8<=10 % true

Page 5: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 5/51

2) Operadores Lógicos

Operadores para realizar operaciones lógicas:  And lógico (&) : >> 0&n % false

 And lógico doble (&&) : >> true&&99 % true Or lógico(|) : >> ‘c’|1 % true

Or lógico doble (||) : >> 10||0 % true

Xor lógico (xor) : >> xor(1,1) % false

Not lógico (~) : >> ~(sin(60)<=1) % true

Page 6: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 6/51

Sentencias: If 

if  (c==0)

a = 180;

end

if  c

a = 180;

end

Page 7: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 7/51

Sentencias: Else If 

if (c<-1)

a = 180

else if (c>1)a = -180

else

a = 0end

if (c<-1)a = 180

else if (c>1)a = -180else

a = 0

end

Page 8: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 8/51

Sentencias: Else If 

• Ejercicio: Implemente un programa que, dado un número realN, identifique:

1) Si el número es negativo.2) Si el número es el cubo de un número entero.El programa deberá escribir sólo un mensaje (no dos)describiendo si el número es 1), 2) o ambos a la vez.

Page 9: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 9/51

Sentencias: For

% test & con &&a = 0; b = 10;ticfor i = 1:1000000

c = a&&b;

 b = b+1;endt2 = toca = 0; b = 10;tic

for i = 1:1000000c = a&b; b = b+1;

endt1 = toc

% sumatoria

n = input(‘Ingrese n:’);

sum = 0;for i = n:-1:1

sum = sum + i;

end

Page 10: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 10/51

Sentencias: While

x = 1;

 while (d<0)

x = 2*x +1;if (x>100)

x = 100;

 break ;end

end

x = 42;

 while exist('mf.m') &&

(mf(x) >= pi)disp('Condition is true')

 break 

end

Page 11: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 11/51

Sentencias: Switch Case

switch a

case 1

c = var1+var2;

case 2c = var1*var2;

otherwise

c = var1/var2;end

Page 12: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 12/51

Declaración de funciones

• El nombre de la función debe ser el mismo del archivo.• No se puede definir una función dentro de un script.•

No es necesario terminar la función con un end.• Los valores retornados son los calculados durante la ejecución del código y se retornan cuando esta termina.• Sin embargo, se puede retornar valores antes de la finalización de lafunción usando return.

Page 13: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 13/51

Funciones

Las funciones se definen de la siguiente manera:

function [mult n]=factorial(n)

if n==0|n==1

disp('El factorial es ');disp('1');return;

endmult = 1;

for i=1:nmult = mult*i;

end;disp('El factorial es ');disp(mult)

Definición

Retorno de valor(condicional)

Inputs

outputs

Page 14: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 14/51

Declaración de funciones

function testFunction

oSin entradas ni salidas

function [x] = testFunction2

oSólo una salida.

function testFunction3(n)

oSólo una entrada.

function [x,y] = testFunction4(a,b,c)

o3 entradas y 2 salidas.

Page 15: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 15/51

Determinando el número de entradas y salidas

Se puede determinar el número de variables deentrada, usando el comando nargin:

>> nargin(‘exp’) % resultado = 1

>> nargin(‘surf’) % resultado = -1 ?? Si nargin se usa dentro de una función, entonces el

resultado será el número de datos ingresados.

Se puede usar nargin para escribir funciones quetrabajen con varias combinaciones de entrada.

Page 16: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 16/51

Uso de nargin()

Ejemplo:

function value = suma2(varargin)if nargin > 2

disp('Error: too many variables');

returnendswitch nargin

case 0disp('Warning: no argument given'); value = 0;

case 1disp('Only 1 argument'); value = varargin{1};

case 2disp('Two arguments'); value = varargin{1}+varargin{2};

end

Page 17: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 17/51

Determinando el número de entradas y salidas

Se puede determinar el número de variables desalida, usando el comando nargout:

>> nargout(‘sin’) % resultado = 1

Si nargout se usa dentro de una función, entonces elresultado será el número de datos de salidarequeridos.

Page 18: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 18/51

Uso de nargout()

Ejemplo:

function [s,varargout] = sizeout(x)

nout = max(nargout,1) - 1;s = size(x);

for k = 1:nout

 varargout{k} = s(k);end

Page 19: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 19/51

Scripts vs Funciones

Scripts: No se pueden declarar funciones dentro.

Todas las variables se pueden observar en el workspace.

Funciones: Usa la declaración function

Código reusable.

 Variables están limitadas a la función.

Classes: Manejo de objetos (investigar …).

Page 20: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 20/51

Clases en Matlab

Se pueden definir clases en Matlab según el siguiente formato:

classdef Calculadora < handleproperties

resAns;operAns;

endmethods

function obj = Calculadora()endfunction s = suma(obj,a,b)

s = a + b;

resAns = s;endend

end

Page 21: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 21/51

Funciones Inline

Se pueden definir funciones inline, es decir sinnecesidad de un script adicional.

El formato para definir funciones inline es el

siguiente: f = (var1,var2)@(function(var1,var2)) Ejemplos:

>> f1 = @(x)x^2-1

>> f1(2)

>> f2 = @(x,y)x*y-2*x-2*y 

>> f2(3,-2)

Page 22: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 22/51

Debug in Matlab

Definir breakpoint.

Ejecutar script

La ejecución se detendrá en el breakpoint: Puede ver las variables dentro del entorno

Puede ejecutar código paso a paso

Page 23: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 23/51

 Aplicación 1

Implemente un programa que convierta un númerodecimal a binario:

Page 24: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 24/51

function binO = dec2bin(dec)if isinteger(dec)

disp('not integer...');return;

endi = 1;

 while (dec>1) bin(i) = mod(dec,2);dec = floor(dec/2);i = i + 1;

end

 bin(i) = dec;for j = 1:i

 binO(j) = bin(i-j+1);end

Page 25: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 25/51

 Aplicación 2

Implemente un programa que permita calcular laraíz de una función usando el método de Newton-Raphson

Page 26: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 26/51

function sol = NewtonRaphson(fun,xo)

%x = 1;if ~xo

disp('initial value can''t be zero');endx = xo;x_ant = x-1;r = x - x_ant;

 while (abs(x-x_ant)>0.0001)dt = x/1000;

Page 27: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 27/51

dfx = (fun(x) - fun(x-dt))/(dt);x_ant = x;x = x - fun(x)/dfx;% divergenciar_ant = r;r = x - x_ant;if abs(r/r_ant)>1

disp('divergiendo... '); break ;

endendsol = x;

Page 28: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 28/51

 Aplicación 3

Escriba una función que permita crear una matriz con 1’s y 0’salternadamente.

function M = patt_gen (N)

M = zeros (N,N);for i = 1: Nfor j = 1: N

if (rem (i+j,2)==0) %Evalua posición de elementoM (i,j) = 1;

else

M(i,j) = 0;end

endend

%Para mostrar la imagen (en un script)

M = patt_gen(50);imshow (uint8(255*M))

Page 29: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 29/51

Ejercicio Parte 1: (Tarea)

Ejercicio: Modificar el ejemplo para generar algúnotro patrón.

Posibles patrones: un número, una letra o algunafigura. El tamaño N debe permanecer ingresadopor teclado.

Page 30: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 30/51

Ejercicios Parte 2: (Tarea)

Complete el programa de la Calculadora usandoclases. (suma, resta, multiplicación, división, …).

Implemente un programa que permita distinguir si

un número es primo. Implemente un programa que realice el producto de

dos matrices A y B dadas: C = A.B. Hint:

Calcule pi mediante series. Hint:

Page 31: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 31/51

Ejercicios Parte 3: (Tarea)

Implemente una función que permita calcular loscruces por cero, para realizar la prueba utilice lasiguiente función: f(x) = x^3 – exp(x)*sin(2x) para xen [-10 10].

Implemente un programa que solicite n nombres ylos organice según las letras iniciales.

Page 32: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 32/51

 Aplicaciones:

Las ecuaciones de movimiento de un móvil son lassiguientes:

x(k+1) = x(k) + vx*dt

 y(k+1) = y(k) + vy*dt

Φ(k+1) = Φ(k) + ω*dt

Considere x(1) = 0, y(1) = 0, θ = 0 y tanto vx, vy y ω ctes.

Si se sabe que el móvil tiene una forma cuadrada, con las

siguientes dimensiones: Largo = 0.5m, Ancho = 0.3.Realice una simulación del movimiento del móvil usandosólo funciones inline.

Page 33: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 33/51

-10 0 10 20 30 40

-5

0

5

10

15

20

y

  x

Animación de Movil3

Φ

 v  y 

 v x

Page 34: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 34/51

clear Pr xr yrdt = 0.1;ti = 0;tf = 16;tt = ti:dt:tf; tt = tt';% Command

 Vr(1) = 0.2; Vl(1) = 0;Pr(1) = 0; xr(1) = 0; yr(1) = 0;% velocidades

 vx = 2; vy = 1; w = 0.01;

Page 35: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 35/51

for k = 1:length(tt)

% Ecuaciones

xr(k+1,1) = xr(k,1) + vx*dt;

 yr(k+1,1) = yr(k,1) + vy*dt;Pr(k+1,1) = Pr(k,1) + w*180/pi*dt;

end

input('Presione Enter');lt = length(tt);

dt = dt;

Page 36: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 36/51

la = 5; % largoan = 3; % ancho% Se definen funciones para las esquinas del móvilTx = @(la,an,psi) (an.*cos(psi)+la.*sin(psi)); %

transformación en xTy = @(la,an,psi) (an.*sin(psi)-la.*cos(psi)); %trasnformación en y 

% PuntosP0 = @(x,y,psi)([x+Tx(an,la,psi) ,y+Ty(an,la,psi) ]);

P1 = @(x,y,psi)([x+Tx(an,-la,psi) ,y+Ty(an,-la,psi) ]);P2 = @(x,y,psi)([x+Tx(-an,-la,psi),y+Ty(-an,-la,psi)]);P3 = @(x,y,psi)([x+Tx(-an,la,psi) ,y+Ty(-an,la,psi) ]);

Page 37: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 37/51

% Se generan los puntos de la animación V0 = P0(xr,yr,Pr); V1 = P1(xr,yr,Pr); V2 = P2(xr,yr,Pr); V3 = P3(xr,yr,Pr);

% Se definen rangos del axisxmax = max(xr); xmin = min(xr);xrange = xmax - xmin;

 ymax = max(yr); ymin = min(yr); yrange = ymax - ymin;

% llamamos a figurahfigure = figure();% Grafica del recorridok = 1;

Page 38: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 38/51

for Ti=1:length(tt)-1% Se dibuja el movilplot([V0(Ti,1) V1(Ti,1)],[V0(Ti,2) V1(Ti,2)], 'r', ...

[V1(Ti,1) V2(Ti,1)],[V1(Ti,2) V2(Ti,2)], 'r', ...[V2(Ti,1) V3(Ti,1)],[V2(Ti,2) V3(Ti,2)], 'r', ...[V3(Ti,1) V0(Ti,1)],[V3(Ti,2) V0(Ti,2)], 'r' ...

);% Etiquetas y títuloxlabel('y'); ylabel('x');title(strcat('Animación de Movil',num2str(velsim,'%d')));% Definimos los ejesaxis([xmin-xrange/2 xmax+xrange/2 ymin-yrange/2 ymax+yrange/2])axis square;grid on;k = k + 1;drawnow;

end

Page 39: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 39/51

Tarea:

Implemente un programa que permita simular elmovimiento de un péndulo, si se sabe que el péndulotiene el siguiente comportamiento:

θ(k+1)=θ(k)+v

(k)*dt 

v(k+1)=v(k)-g*dt*sin(θ(k))/L

Page 40: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 40/51

 Aplicaciones: Parte 3

Considere el siguiente sistema mecánico de tresgrados de libertad:

Page 41: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 41/51

La ubicación XY de las articulaciones se puedendeterminar a partir de la siguiente matriz:

Por ejemplo, la ubicación del punto O3, se puede

determinar de la siguiente manera:

Page 42: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 42/51

De tal forma que extrayendo los elementos qx y q y 

de la matriz, es posible conocer las coordenadasXY del punto O3 respecto al sistema decoordenadas centrado en O

0.

Desarrollar un programa que permita mostrar unaanimación del movimiento del sistema cuando se

programa trayectorias para cada grado de libertad.

Page 43: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 43/51

%Este programa calcula la matriz de cambio decoordenadas

function A = mat_giro (th, a)

 A = [cos(th) -sin(th) 0 a*cos(th)

sin(th) cos(th) 0 a*sin(th)

0 0 1 0

0 0 0 1];

end

Page 44: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 44/51

%Esta función permite desarrollar un perfil trapezoidal%Produce un cambio desde 0 hasta af %El cambio se inicia en t1 y termina en t2

function th = trapecio (t, t1, t2, af)

u = @heaviside;

th = (u(t)-u(t-t1)).*(0)+...

(u(t-t1)-u(t-t2)).*(af*pi/180*(t-t1)/(t2-t1))+...u(t-t2)*af*pi/180;

end

Page 45: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 45/51

%-----------------------------%Unión de 3 grados de libertad%Autor: JDMR %-----------------------------clc; clear all; close all;

%Longitud de brazos%-------------------a1 = 7;a2 = 3;a3 = 2;

%Máximo alcance%--------------L = abs (a1+a2+a3);

Page 46: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 46/51

%Angulo final de giro de cada motor%----------------------------------af1 = 60;af2 = -150;af3 = 90;

%Parámetros temporales%---------------------t1_1 = 0; %Inicia subida motor 1t1_2 = 3; %Termina subida motor 1t2_1 = 1;t2_2 = 2;t3_1 = 1;t3_2 = 4;

Page 47: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 47/51

tf = 5; %Tiempo final de simulaciónN = 500; %Cantidad de puntos

t = linspace(0,tf, N);

%Genera trayectorias

%-------------------

th1 = trapecio (t, t1_1, t1_2, af1);

th2 = trapecio (t, t2_1, t2_2, af2);

th3 = trapecio (t, t3_1, t3_2, af3);

Page 48: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 48/51

for i = 1:N

%Matriz de giro%--------------T1 = mat_giro(th1(i), a1);

T2 = mat_giro(th1(i), a1)*mat_giro(th2(i),a2);T3 = mat_giro(th1(i), a1)*mat_giro(th2(i),a2)*mat_giro(th3(i),a3);

%Extrae posiciones%-----------------

plot (0,0, 'ok', ...T1(1,4), T1(2,4), 'ob', ...T2(1,4), T2(2,4), 'or', ...T3(1,4), T3(2,4), 'ok');

Page 49: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 49/51

title ('Trayectoria')xlabel ('Eje X'); ylabel ('Eje Y');legend('O0', 'O1', 'O2', 'O3');axis ([-L L -L L]);

line ([0 T1(1,4)],[0 T1(2,4)], 'Color', 'k', 'LineWidth', 2);line ([T1(1,4) T2(1,4)],[T1(2,4) T2(2,4)], 'Color','b', 'LineWidth', 2);line ([T2(1,4) T3(1,4)],[T2(2,4) T3(2,4)], 'Color','r', 'LineWidth', 2);

text(0,0.9*L,strcat(num2str(t(i)),' s'));

drawnow;end

Page 50: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 50/51

-10 -5 0 5 10

-10

-5

0

5

10

Trayectoria

Eje X

   E   j  e   Y

 

2.1717 s O0

O1

O2

O3

Page 51: Introduccion al Matlab para Control 2 parte

7/18/2019 Introduccion al Matlab para Control 2 parte

http://slidepdf.com/reader/full/introduccion-al-matlab-para-control-2-parte 51/51

Tarea:

Implemente la simulación de un brazo de 5 gradosde libertad.