Borrar filtros
Borrar filtros

How to store a matrix output of a loop?

3 visualizaciones (últimos 30 días)
azarang asadi
azarang asadi el 1 de Feb. de 2020
Comentada: azarang asadi el 2 de Feb. de 2020
Here's my code:
(tryna get the transformation matrices of each link of a robot and save them)
g=zeroes(4); %initial global frame
for j=1:7
theta=q(j);
alpha=al(j);
LinkLength=a(j);
LinkOffset=d(j);
g(j,:) = [cos(theta),-sin(theta)*cos(alpha),sin(theta)*sin(alpha),LinkLength*cos(theta);
sin(theta),cos(theta)*cos(alpha),-cos(theta)*sin(alpha),LinkLength*sin(theta);
0,sin(alpha),cos(alpha),LinkOffset;
0,0,0,1];
end
I need to have 7 matrices corresponding to the transformation of each link like g(1),g(2), ....

Respuesta aceptada

Walter Roberson
Walter Roberson el 1 de Feb. de 2020
Editada: Walter Roberson el 1 de Feb. de 2020
g=zeroes(4, 4, 7); %initial global frame
for j=1:7
theta=q(j);
alpha=al(j);
LinkLength=a(j);
LinkOffset=d(j);
g(:, :, j) = [cos(theta),-sin(theta)*cos(alpha),sin(theta)*sin(alpha),LinkLength*cos(theta);
sin(theta),cos(theta)*cos(alpha),-cos(theta)*sin(alpha),LinkLength*sin(theta);
0,sin(alpha),cos(alpha),LinkOffset;
0,0,0,1];
end
Now g(:,:,k) will be the k'th matrix.
If you prefer,
g = cell(7, 1); %initial global frame
for j=1:7
theta=q(j);
alpha=al(j);
LinkLength=a(j);
LinkOffset=d(j);
g{j} = [cos(theta),-sin(theta)*cos(alpha),sin(theta)*sin(alpha),LinkLength*cos(theta);
sin(theta),cos(theta)*cos(alpha),-cos(theta)*sin(alpha),LinkLength*sin(theta);
0,sin(alpha),cos(alpha),LinkOffset;
0,0,0,1];
end
and then g{k} would be the k'th matrix.
  1 comentario
azarang asadi
azarang asadi el 2 de Feb. de 2020
first one didn't work but the second one worked, thanks

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Productos


Versión

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by