MatLab中新的布尔逻辑,但我有变量u和v,它们是单元阵列(1 x 2928长),单元矩阵分别为58 x 58,u和v值(风)。我需要使用给出的方程式来计算合成矢量(风向),使用下面的等式,但我无法弄清楚这一点!任何帮助将不胜感激!
for i = 1:2928
if (v > 0)
direction {i} = ((180 / pi) * arctan((u/v)) + 180);
elseif (u < 0 and v < 0);
direction {i} = ((180 / pi) * arctan((u/v)) + 0);
else (u > 0 and v < 0);
direction {i} = ((180 / pi) * arctan((u/v)) + 360);
end
end
谢谢!
答案 0 :(得分:0)
由于您使用for循环逐个元素地进行计算,因此您还需要指定v(i)和u(i)元素。
for i = 1:2928
if (v(i) > 0)
direction(i) = ((180 / pi) * arctan((u(i)/v(i))) + 180);
elseif (u(i) < 0 && v(i) < 0);
direction(i) = ((180 / pi) * arctan((u(i)/v(i))) + 0);
else (u(i) > 0 && v(i) < 0);
direction(i) = ((180 / pi) * arctan((u(i)/v(i))) + 360);
end
end
有一种更简单,更优雅的方法可以进行与上述相同的计算,但没有for循环。
试试这个:
direction(v>0) = ((180 / pi) * arctan((u(v>0)./v(v>0))) + 180);
对其他条件也这样做。使用&amp;&amp;而不是'和'和||如果你想'或'。
答案 1 :(得分:0)
尝试使用atan2()
。此函数执行象限更正,我认为您尝试使用if
语句实现。试试这个:
direction{i} = (180 / pi) * atan2(u{i},v{i});