Filter löschen
Filter löschen

How to store a matrix output of a loop?

3 Ansichten (letzte 30 Tage)
azarang asadi
azarang asadi am 1 Feb. 2020
Kommentiert: azarang asadi am 2 Feb. 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), ....

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 1 Feb. 2020
Bearbeitet: Walter Roberson am 1 Feb. 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 Kommentar
azarang asadi
azarang asadi am 2 Feb. 2020
first one didn't work but the second one worked, thanks

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Produkte


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by