matlab:极坐标中求解给定角度在角度集合中的最接近的顺时针和逆时针角度

  1. 原理
    给定角度 c c c,角度集合 Q Q Q,依照将 c c c调整为180度的幅度变更 Q Q Q,然后寻找最接近的顺时针和逆时针角度。
    (极坐标中,因为0度和360度的存在,直接求解最接近的顺时针和逆时针角度有些麻烦。所以,先更改坐标原点,使目标角度处于最中间位置,即180度,避免后续求解时出现跨越界限的情况)
  2. 程序
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
  1. 输出
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值