for j = 1:4
n = (co(e(j,2),:) - co(e(j,1),:));
n = n./norm(n);
F = e(j,5).*e(j,4)./e(j,3).*-(dot(u,n)).*n
theta = acosd(dot(F,n)/(norm(F)*norm(n)))
if theta == 180
F2 = [F2; -sqrt(F(1)^2 + F(2)^2 + F(3)^2)]
else if theta == 0
F2 = [F2; sqrt(F(1)^2 + F(2)^2 + F(3)^2)]
end
end
end
本質的に、if文のFの最初の値が無視されているシータの値は180です。チェックするために、私は 'whos theta'をやっていて、シータ== 180を0に戻したコードに書きました.j = 2:4の場合でも、コードはj = 2となり、θの値は180となる。これは、j = 1のif文を完全にスキップしているかのようなものです。これは、Fが3つの非ゼロ成分を持つ唯一の行列ベクトルですが、これを解決する方法はまだ分かりません。私のMatlabコードが機能していない(非常に単純で奇妙なif文の問題)
theta == 180は0を返します.thetaは180ではありません。問題はif文ではなく、theta(またはF)への値の代入です。 j = 1のときは、Fとthetaを個別に調べることをお勧めします。 –