这个报错说位置 1 处的索引超出数组边界(不能超出 1)应该怎么改啊

该代码使用MATLAB模拟了无人机在给定圆周半径下的分布优化过程。首先初始化无人机位置,然后选择一个基准无人机,计算其他无人机相对于基准的角度,并按角度排序。通过不断调整非基准无人机的位置,使其接近均匀分布,当满足特定分布条件时结束循环。最终,程序绘制了调整后的无人机位置分布图。
摘要由CSDN通过智能技术生成

用matlab写的

% 初始化无人机位置
polar_data = [0 0; 
              100 0; 
              98 40.10; 
              112 199.96; 
              105 240.07;
              98 280.17; 
              112 320.18];
n = size(polar_data, 1); % 无人机数量
r = 100; % 圆周半径
theta = linspace(0, 2*pi, n+1)'; % 平均分布的角度

while true
    % 选择一个无人机作为发射信号的基准
    base = polar_data(1, :);
    % 计算其他无人机相对于基准无人机的方向角度
    dir = atan2(polar_data(:, 2)-base(2), polar_data(:, 1)-base(1));
    % 按照方向角度排序
    [~, idx] = sort(dir);
    % 取最多三架无人机
    idx = idx(1:min(3, n-1)) + 1;
    % 发射信号并调整位置
    for i = 1:length(idx)
        polar_data = polar_data(idx(i), :);
        d = norm(polar_data - base);
        if d > r
            polar_data(idx(i), :) = base + r/d*(polar_data - base);
        end
    end
    % 判断是否均匀分布
    if max(abs(mod(dir(idx) - theta(2:end), 2*pi) - pi)) < 0.1
        break;
    end
end

% 绘制结果
figure;
polarplot(theta, r*ones(size(theta)), 'k--');
hold on;
polarplot(dir, normr(polar_data - base), 'o');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值