原理 给定角度
c
c
c ,角度集合
Q
Q
Q ,依照将
c
c
c 调整为180度的幅度变更
Q
Q
Q ,然后寻找最接近的顺时针和逆时针角度。 (极坐标中,因为0度和360度的存在,直接求解最接近的顺时针和逆时针角度有些麻烦。所以,先更改坐标原点,使目标角度处于最中间位置,即180度,避免后续求解时出现跨越界限的情况) 程序
data = randperm( 360, 20) % 角度集合
Target = 10; % 目标角度
[Angle_wise,Angle_unwise] = closest_angle( Target, data )
% 最近的顺,逆时针角度
function [Angle_wise,Angle_unwise] = closest_angle( Target, data )
if size( data , 1) == 1
data = data ';
end
data0 = data ;
data ( data ==Target, :) = [ ] ;
delta = 180-Target;
data = data + delta;
data ( data >360, :) = data ( data >360, :) - 360;
data ( data <0, :) = data ( data <0, :) + 360;
[a,b] = sort ( [data;180] ) ;
index = find( a==180) ;
Angle_unwise = data0( b( index+1) ) ; % 逆时针
Angle_wise = data0( b( index-1) ) ; % 顺时针
end
输出