MATLAB 查找数组元素并有条件地添加到常量

MATLAB find array element and conditionally add to a constant

给定这个角度数组:

  123.5280
  129.5280
  129.0130
  136.2960
  139.1640
  145.7430
  148.9800
  156.9080
  168.3440
  179.2340
    3.0840
    3.9720

我想识别那些小于 90 度的

angles(angles < 90)

ans =

    3.0840
    3.9720

并且只将 180 添加到结果为

的那两个
  123.5280
  129.5280
  129.0130
  136.2960
  139.1640
  145.7430
  148.9800
  156.9080
  168.3440
  179.2340
  183.0840
  183.9720

如何实现?

angles(angles < 90) = angles(angles < 90) + 180

您正在寻找的行为称为(阶段)展开,并且有一个内置函数 unwrap

res = unwrap(angles / 90 * pi) / pi * 90

请注意,unwrap 以弧度为单位工作,适用于 +/-pi 的跳跃,而不是您要求的 2*pi,因此我故意使用 90 * pi 而不是 180 * pi.另见讨论 here.

一行解决方案:

angles=angles+(angles<90)*180;