ループ処理が途中までしかできない原因

7 Ansichten (letzte 30 Tage)
知真 梶山
知真 梶山 am 11 Okt. 2021
Verschoben: Atsushi Ueno am 17 Aug. 2022
30個のマーカーが以下のように格子状に並んでおり、横に隣り合うマーカー間のベクトルを作成したいです。
(1-2,2-3,3-4,4-5,6-7,7-8....のように)
そこで、マーカーの三次元データから以下のループをつくりました。
%マーカ間距離の算出
%マーカ1からマーカ2のベクトルを作成
%位置XYX 配列の並び
% 1--2--3--4--5
% | | | | |
% 6--7--8--9-10
% | | | | |
%11-12-13-14-15
% | | | | |
%16 17 18 19 20
% | | | | |
m_vector_hor = zeros(md.Frame_No,3,24);
for j=0:5
for k=1:4
m_vector_hor(:,:,j*4+k) = [X(:,j*5+(k+1))-X(:,j*5+k),Y(:,j*5+(k+1))-Y(:,j*5+k),Z(:,j*5+(k+1))-Z(:,j*5+k)];
end
end
m_vector_hor(:,:,4)までは正常に動くのですが、m_vector_hor(:,:,5)以降から全て0の配列になってしまいます。
どこが間違っているのでしょうか。
  1 Kommentar
Atsushi Ueno
Atsushi Ueno am 17 Okt. 2021
Verschoben: Atsushi Ueno am 17 Aug. 2022
> m_vector_hor(:,:,4)までは正常に動くのですが、m_vector_hor(:,:,5)以降から全て0の配列になってしまいます。
ここではmd.Frame_No=1780としましたが、問題が再現しません。m_vector_hor(:,:,5)以降から全て0の配列になりませんでした。恐らく質問者様の環境と質問文に提示されたデータに違いがあるのではないかと思います。
上図は左からX,Y,Zをプロットしたものです。全て31列~100列がゼロになっています。しかし下記演算においては、j=5,k=4の時の最大となるindexがj*5+(k+1)=30なので、値の入っている範囲しか演算に使っていません。
> どこが間違っているのでしょうか。
X,Y,Zそれぞれについて5列ずつ差分(diff)を取ってm_vector_horにまとめて3次元データとして格納しています。その通りの意図であれば、エラーもありませんし、特にどこも間違っていないと思います。
以上、恐らく既に自己解決していると思いますが、後から見る人の為にも回答致します。

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu ループと条件付きステートメント finden Sie in Help Center und File Exchange

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!