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;
给定这个角度数组:
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;