for文で行列全体を1つの要素として繰り返す

41 views (last 30 days)
taichi muto
taichi muto on 12 Sep 2022
Commented: taichi muto on 13 Sep 2022
for文を使って i 番目の行列を求めようとしています。
i 番目のTh1,Th2,Th3を使って i 番目のJ(2×3行列)を求めたいです。
行列の要素ではなく、2×3の行列全体を i 番目と指定することはできますか。
よろしくお願いいたします。
for i=1:n
if 0<=c_q(i,2) && c_q(i,2)<=360
Th1(i,1) = pi+pi/2+a_h_step(i,2)+q0hr(i,2);
Th2(i,1) = -q0kr(i,2)-a_k_step(i,2);
Th3(i,1) = pi/2-(a_a_step(i,2)+q0ar(i,2));
J = [
-L1*sin(Th1(i,1))-L2*sin(Th1(i,1)+Th2(i,1))-L3*sin(Th1(i,1)+Th2(i,1)+Th3(i,1)), -L2*sin(Th1(i,1)+Th2(i,1))-L3*sin(Th1(i,1)+Th2(i,1)+Th3(i,1)), -L3*sin(Th1(i,1)+Th2(i,1)+Th3(i,1));
L1*cos(Th1(i,1))+L2*cos(Th1(i,1)+Th2(i,1))+L3*cos(Th1(i,1)+Th2(i,1)+Th3(i,1)), L2*cos(Th1(i,1)+Th2(i,1))+L3*cos(Th1(i,1)+Th2(i,1)+Th3(i,1)), L3*cos(Th1(i,1)+Th2(i,1)+Th3(i,1));
];
end
end

Accepted Answer

Hernia Baby
Hernia Baby on 13 Sep 2022
> 行列の要素ではなく、2×3の行列全体を i 番目と指定することはできますか。
cell型を使えば可能です。
簡単に作ってみましょう。
for ii = 1:3
J{ii} = randi(ii,2,3)
end
J = 1×1 cell array
{2×3 double}
J = 1×2 cell array
{2×3 double} {2×3 double}
J = 1×3 cell array
{2×3 double} {2×3 double} {2×3 double}
ここで1番目と2番目の J の値を見てみます。
J{1}
ans = 2×3
1 1 1 1 1 1
J{2}
ans = 2×3
1 2 2 1 2 2
  1 Comment
taichi muto
taichi muto on 13 Sep 2022
ご回答ありがとうございます。
また、例を加えて分かりやすく説明していただきありがとうございます。
私が出したコードで表現すると、
J{i} = [
-L1*sin(Th1(i,1))-L2*sin(Th1(i,1)+Th2(i,1))-L3*sin(Th1(i,1)+Th2(i,1)+Th3(i,1)), -L2*sin(Th1(i,1)+Th2(i,1))-L3*sin(Th1(i,1)+Th2(i,1)+Th3(i,1)), -L3*sin(Th1(i,1)+Th2(i,1)+Th3(i,1));
L1*cos(Th1(i,1))+L2*cos(Th1(i,1)+Th2(i,1))+L3*cos(Th1(i,1)+Th2(i,1)+Th3(i,1)), L2*cos(Th1(i,1)+Th2(i,1))+L3*cos(Th1(i,1)+Th2(i,1)+Th3(i,1)), L3*cos(Th1(i,1)+Th2(i,1)+Th3(i,1));
];
とすれば、i 番目の J を得られるということですね。

Sign in to comment.

More Answers (0)

Categories

Find more on Matrix Indexing in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!