You are on page 1of 12

UNIVERSIDAD DE PAMPLONA

Unidad de Ingeniería Mecatrónica


Facultad de Ingenierías. Programa de Ingeniería Mecatrónica.
Laboratorio I
Robótica I

CODIFICACIÓN Lab I Tema: Introducción a Matlab

OBJETIVO:
Recordar y/o aprender algunos comandos básicos de Matlab, con el fin de usar este
software como una herramienta en el desarrollo de diversos algoritmos que se desarrollaran
en e transcurso de la materia.

OBJETIVOS ESPECIFICOS:
1. Aprender a crear, modificar y operar arreglos matriciales.
2. Aplicar las estructuras básicas de programación en matlab.
3. Representar datos por medio de gráficas.

REQUISITOS:
Conocer los conceptos generales de algebra lineal y programación básica.
EQUIPOS Y HERRAMIENTAS
1.- Computador con matlab

PROCEDIMIENTO

Repetir todos los ejemplos que se enuncian a continuacion y realizar los ejercicios
planteados.

Ejemplos:
Creación de un vector fila:
>> A = [1 , 2 , 3]
A=
1 2 3

Creación de un vector columna:


>> B = [1 ; 2 ; 3]
B =
1
2
3

Transponer un vector fila:


>> C = [1 , 2 , 3]'

C=

1
2
3

Creacion de una matriz:

VERSION 1 – Ph.D. César Augusto Peña C


UNIVERSIDAD DE PAMPLONA
Unidad de Ingeniería Mecatrónica
Facultad de Ingenierías. Programa de Ingeniería Mecatrónica.
Laboratorio I
Robótica I

>> M = [1 , 2 , 3 ; 4 , 5 , 6 ; 7 , 8 , 9 ]
M=
1 2 3
4 5 6
7 8 9

Creación de una matriz diagonal 4x4:


>> Md = eye(4)
Md =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

Creación de una matriz 4x10 con todos los elementos nulos:


>> Mz = zeros(4,10)
Mz =
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0

Creación de una matriz 5x3 con todos los elementos iguales a 1:


>> M1 = ones(5,3)
M1 =
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1

Unión de matrices, observe la diferencia entre la matriz C y la D:


>> A = [ 1 , 2 , 3 ; 4 , 5 , 6]
A=
1 2 3
4 5 6
>> B = [ 7 , 8 , 9 ; 10 , 11 , 12]
B=
7 8 9
10 11 12
>> C = [A , B]
C=
1 2 3 7 8 9
4 5 6 10 11 12
>> D = [A ; B]
D=
1 2 3
4 5 6
7 8 9
10 11 12

VERSION 1 – Ph.D. César Augusto Peña C


UNIVERSIDAD DE PAMPLONA
Unidad de Ingeniería Mecatrónica
Facultad de Ingenierías. Programa de Ingeniería Mecatrónica.
Laboratorio I
Robótica I

Cambiar el valor del elemento (2,2) de la matriz A por 10:


>> A = [1 , 2 , 3 ; 4 , 5 , 6 ; 7 , 8 , 9 ]
A=
1 2 3
4 5 6
7 8 9
>> A(2,2) = 10
A=
1 2 3
4 10 6
7 8 9

Cambiar todos los elementos de la columna 2 por el valor 111


>> A(:,2) = 111
A=
1 111 3
4 111 6
7 111 9

Sustituir los elementos (2,2) (2,3) (3,2) (3,3) por una matriz de unos de 2x2
>> A(2:3,2:3) = ones(2,2)
A=
1 111 3
4 1 1
7 1 1

Eliminar la segunda fila de la matriz


>> A(2,:) = []
A=
1 111 3
7 1 1

Crear una matriz de números aleatorios 4x4


>> B = rand(4,4)
B=
0.8147 0.6324 0.9575 0.9572
0.9058 0.0975 0.9649 0.4854
0.1270 0.2785 0.1576 0.8003
0.9134 0.5469 0.9706 0.1419

Generación de numeros
Matlab permite la generación de números por medio del metodo de incrementos, usando la
siguiente sintaxis:

vector = valor inicial: incremento: valor final

VERSION 1 – Ph.D. César Augusto Peña C


UNIVERSIDAD DE PAMPLONA
Unidad de Ingeniería Mecatrónica
Facultad de Ingenierías. Programa de Ingeniería Mecatrónica.
Laboratorio I
Robótica I

ejemplo 1:
>> vector = 1:2:11
vector =
1 3 5 7 9 11

Por numero de puntos dentro de un rango: con espaciamiento lineal, la sintaxis es:

linspace(valor inicial, valor final, numero de puntos)


ejemplo 2:
>> A = linspace(1, 100, 10)
A=
1 12 23 34 45 56 67 78 89 100

1. Escribir la sentencia correcta para crear un vector igual al obtenido en el ejemplo anterior
pero usando la sintaxis del metodo de incrementos.

Encontrar los valores mayores a 5 de la matriz M y reemplazarlos por 0. Observe el


significado del vector V.
>> M =[1 , 2 , 3 ; 4 , 5 , 6 ; 7 , 8 , 9 ]
M=
1 2 3
4 5 6
7 8 9
>> V = find(M > 5)
V=
3
6
8
9
>> M(V) = 0
M=
1 2 3
4 5 0
0 0 0

Obtener el valor máximo, minimo, promedio y la suma de los elementos del vector V
>> V = [ 1, 3, 6, 9, 2, 4, 6, 1, 3, 4, 77, 32, 21, 3, 1, 9]
V=
1 3 6 9 2 4 6 1 3 4 77 32 21 3 1 9
>> minimo = min(V)
minimo =
1
>> maximo = max(V)
maximo =
77
>> promedio = mean(V)
promedio =
11.3750

VERSION 1 – Ph.D. César Augusto Peña C


UNIVERSIDAD DE PAMPLONA
Unidad de Ingeniería Mecatrónica
Facultad de Ingenierías. Programa de Ingeniería Mecatrónica.
Laboratorio I
Robótica I

>> suma = sum(V)


suma =
182

Realizar el producto cruz y el producto punto de dos vectores


>> A = [2, 5, 7]
A=
2 5 7
>> B = [3, 9, 1]
B=
3 9 1
>> producto_cruz = cross(A,B)
producto_cruz =
-58 19 3
>> producto_punto = dot(A,B)
producto_punto =
58

Obtener el valor absoluto de los elementos de un vector


>> A = [-2 , 4 , -9]
A=
-2 4 -9
>> abs(A)
ans =
2 4 9

Obtener la norma de un vector


>> norm([4, 2, 3])
ans =
5.3852

Calcular el tamaño de un arreglo matricial


>> M =[1 , 2 , 3 ; 4 , 5 , 6 ]
M=
1 2 3
4 5 6
>> [fil,col]=size(M)
fil =
2
col =
3

Elevar a la 4 los elementos de un vector


>> [1, 2, 3, 5].^4
ans =
1 16 81 625

VERSION 1 – Ph.D. César Augusto Peña C


UNIVERSIDAD DE PAMPLONA
Unidad de Ingeniería Mecatrónica
Facultad de Ingenierías. Programa de Ingeniería Mecatrónica.
Laboratorio I
Robótica I

Multiplicar de dos vectores, elemento por elemento


[1, 2, 3, 4].* [2, 5, 3, 10]
ans =
2 10 9 40

Redondeo al entero más cercano


>> round([3.2, 5.5, 7.8])
ans =
3 6 8

Función seno con argumento de entrada un angulo en radianes


>> sin(pi/2)
ans =
1

Función seno con argumento de entrada un angulo en grados


>> sind(45)
ans =
0.7071

Raiz cuadrada de un vector


>> sqrt([2, 4, 9])
ans =
1.4142 2.0000 3.0000

Inversa de una matriz


>> M =[2 , 6 , 3 ; 4 , 8 , 6 ; 7 , 8 , 9 ]
M=
2 6 3
4 8 6
7 8 9
>> inv(M)
ans =
2.0000 -2.5000 1.0000
0.5000 -0.2500 0
-2.0000 2.1667 -0.6667

Pseudo inversa de una matriz (Moore-Penrose)


>> M =[2 , 6 , 3 ; 4 , 8 , 7]
M =
2 6 3
4 8 7
>> IM = pinv(M)
IM =
-0.1276 0.1071
0.4031 -0.1786
-0.3878 0.2857
>> M*IM
ans =

VERSION 1 – Ph.D. César Augusto Peña C


UNIVERSIDAD DE PAMPLONA
Unidad de Ingeniería Mecatrónica
Facultad de Ingenierías. Programa de Ingeniería Mecatrónica.
Laboratorio I
Robótica I

1.0000 -0.0000
0 1.0000

Determinante de una matriz


>> det([9 , 6 , 3 ; 4 , 7 , 6 ; 7 , 8 , 9 ])
ans =
120

Mostrar un mensaje
>> disp('mensaje de texto')
mensaje de texto

Obtener la ayuda del comando “det”


>> help det
DET Determinant.
DET(X) is the determinant of the square matrix X.

Use COND instead of DET to test for matrix singularity.

See also cond.

Overloaded methods:
gf/det
sym/det
laurmat/det

Reference page in Help browser


doc det

Uso de la función empty


>> A = [7 , 8 , 4, 2 ,1, 12]
A=
7 8 4 2 1 12
>> L1 = find(A > 7)
L1 =
2 6
>> isempty(L1)
ans =
0
>> L2 = find(A > 15)
L2 =
Empty matrix: 1-by-0
>> isempty(L2)
ans =
1

Uso de variables simbolicas


>> syms x y

VERSION 1 – Ph.D. César Augusto Peña C


UNIVERSIDAD DE PAMPLONA
Unidad de Ingeniería Mecatrónica
Facultad de Ingenierías. Programa de Ingeniería Mecatrónica.
Laboratorio I
Robótica I

>> z = x + y
z=

x+y

Grabar las variables del workspace


>> save m_1.mat

Resolver ecuaciones con variables simbolicas


>> syms x
>> solve('x^2 + 5 = 30',x)
ans =
5
-5

Uso de la función “if”


Archivo m
x = 4;
if (x == 7)
disp('Valor igual a 7');
elseif (x > 7)
disp('Valor mayor a 7');
else
disp('Valor menor a 7');
end
Resultado de la ejecución del archivo m
Valor menor a 7

Uso de la funcion for


Archivo m
for i=1:5
Vec(i) = i^2 + 5
end
Resultado de la ejecución del archivo m
Vec =
6
Vec =
6 9
Vec =
6 9 14
Vec =
6 9 14 21
Vec =
6 9 14 21 30

VERSION 1 – Ph.D. César Augusto Peña C


UNIVERSIDAD DE PAMPLONA
Unidad de Ingeniería Mecatrónica
Facultad de Ingenierías. Programa de Ingeniería Mecatrónica.
Laboratorio I
Robótica I

Uso de la función while


Archivo m
y = 0
while (y <= 700)
y = 1 + 5*y
end
Resultado de la ejecución del archivo m
y=
0
y=
1
y=
6
y=
31
y=
156
y=
781

Uso de la función switch


Archivo m
x = 3
switch x
case x == 1
disp('Valor = 1')
case {3, 5}
disp('El valor es 3 o 5')
otherwise
disp('El valor no es ni 1, ni 3, ni 5')
end
Resultado de la ejecución del archivo m
x=
3
El valor es 3 o 5

Uso de la función eval


Archivo m
for i=1:3
s = ['save m_' int2str(i) '.mat']
eval(s)
end
Resultado de la ejecución del archivo m
s=
save m_1.mat
s=
save m_2.mat
s=
save m_3.mat

VERSION 1 – Ph.D. César Augusto Peña C


UNIVERSIDAD DE PAMPLONA
Unidad de Ingeniería Mecatrónica
Facultad de Ingenierías. Programa de Ingeniería Mecatrónica.
Laboratorio I
Robótica I

Crear una grafica a partir de dos vectores


Archivo m
clear; % Borra las variables del workspace
close all; % cierra las ventanas abiertas
clc; % borra la pantalla

figure(1); % Crea una ventana para hacer nueva figura


x = [1:100];
y = x.^2;
plot (x,y);
title('Funcion cuadratica'); % Crea el titulo de la figura
xlabel('X');% Etiqueta el eje x
ylabel('Y');% Etiqueta el eje y

Resultado de la ejecución del archivo m

Dibujar una linea en el espacio


Archivo m
clear; % Borra las variables del workspace
close all; % cierra las ventanas abiertas
clc; % borra la pantalla
figure(1); % Crea una ventana para hacer nueva figura
p1 = [1 , 1 , 1];
p2 = [3 , 4 , 5];
line( [p1(1) , p2(1)], [p1(2) , p2(2)], [p1(3) , p2(3)]);
title('Funcion cuadratica'); % Crea el titulo de la figura
xlabel('X'); % Etiqueta el eje x
ylabel('Y'); % Etiqueta el eje y
ylabel('Y'); % Etiqueta el eje y
grid on % Activa la grilla
Resultado de la ejecución del archivo m

VERSION 1 – Ph.D. César Augusto Peña C


UNIVERSIDAD DE PAMPLONA
Unidad de Ingeniería Mecatrónica
Facultad de Ingenierías. Programa de Ingeniería Mecatrónica.
Laboratorio I
Robótica I

Creación de una función:


Archivo m
% En estas lineas se escribe la ayuda correspondiente a la funcion que se
% desea crear, indica los parametros de entrada y de salida de la funcion
% Tambien se suele colocar los comandos relacionados y el autor.

function arg_salida = nombre_de_la_funcion(parametro_1, parametro_2)

%se desarrolla el algoritmo pertinente, por ejemplo:


arg_salida = parametro_1*parametro_2;

Ejemplo del uso de la funcion


>> help nombre_de_la_funcion
En estas lineas se escribe la ayuda correspondiente a la funcion que se
desea crear, indica los parametros de entrada y de salida de la funcion
Tambien se suele colocar los comandos relacionados y el autor.

>> R = nombre_de_la_funcion(2, 10)


R=
20

Ejercicios adicionales:

1. Dibujar en matlab el mecanismo que se ilustra en la siguiente figura, donde h=5 cm, L1=
40 cm, L2=80 cm:

VERSION 1 – Ph.D. César Augusto Peña C


UNIVERSIDAD DE PAMPLONA
Unidad de Ingeniería Mecatrónica
Facultad de Ingenierías. Programa de Ingeniería Mecatrónica.
Laboratorio I
Robótica I

2. Realizar una animación donde se observe el movimiento del mecanismo. (La manivela
debe girar 3 vueltas) Recomendación: Lease la ayuda de los comandos pause, clf y hold on.
3. Obtengase un grafica que describe el desplazamiento del piston.
4. Obtengase la grafica que describe la velocidad del piston cuando la velocidad de la
manivela es de 0.5 rad/s
5. Obtengase la grafica de la aceleracion del piston bajo las mismas condiciones. Aplicar el
comando subplot.
6. Crear una función que dibujar un robot SCARA, dados los angulos de las dos primeras
articulaciones y el desplazamiento de la última articulación. Representar los eslabones por
medio de lineas.
7. Realizar una animacion haciendo que el robot se mueva según un arreglo matricial que
contiene los angulos de angulos de las 2 primeras articulaciones y el desplazamiento de la
última articulación.

Figura. Robot SCARA

VERSION 1 – Ph.D. César Augusto Peña C

You might also like