AOA二维出结果图代码,笔记


% 定义目标点位置
x_target = 200;
y_target = 200;

% 初始飞机位置
x_aircraft1 = 0;
y_aircraft1 = 0;
x_aircraft2 = 0;
y_aircraft2 = 50;
trajectory_target = [];
trajectory_aircraft1 = []; % 初始化空矩阵
 trajectory_aircraft2=[];
% 计算飞机到目标点的距离
distance_to_target1 = @(x, y) sqrt((x - x_target)^2 + (y - y_target)^2);
distance_to_target2 = @(x, y) sqrt((x - x_target)^2 + (y - y_target)^2);

% 计算飞机到目标点的角度
angle_to_target1 = @(x, y) atan2(y_target - y, x_target - x);
angle_to_target2 = @(x, y) atan2(y_target - y, x_target - x);
% 模拟飞机的运动和测量
for t = 1:100
    % 更新飞机位置(简单起见,假设飞机匀速运动)
    x_aircraft1 = x_aircraft1 +1 ;
    y_aircraft1 = y_aircraft1 +0.6; % 沿对角线运动,使其有一定的角度
    x_aircraft2 = x_aircraft2 +1;
    y_aircraft2 = y_aircraft2 +0.6;
    
    % 记录飞机位置
    trajectory_aircraft1 = [trajectory_aircraft1; x_aircraft1, y_aircraft1];
    trajectory_aircraft2 = [trajectory_aircraft2; x_aircraft2, y_aircraft2];
    
%     % 计算测量角度,用弧度表示
%     angle1= angle_to_target1(x_aircraft1, y_aircraft1);
%     angle2 = angle_to_target2(x_aircraft2, y_aircraft2);
   % 计算测量角度,用弧度表示,并加入随机误差
%     angle1 = atan2(y_target - y_aircraft1, x_target - x_aircraft1) + (rand - 0.5) * deg2rad(1);
%     angle2 = atan2(y_target - y_aircraft2, x_target - x_aircraft2) + (rand - 0.5) * deg2rad(1); 
    angle1 = atan2(y_target - y_aircraft1, x_target - x_aircraft1) ;
    angle2 = atan2(y_target - y_aircraft2, x_target - x_aircraft2); 
   % 计算目标的位置坐标的斜率
    m1 = tan(angle1);
    m2 = tan(angle2);
 
    x_position=(y_aircraft1- y_aircraft2-m1*x_aircraft1+m2*x_aircraft2)/(m2-m1);
    y_position=(y_aircraft1*m2-m1* y_aircraft2-m1*m2*x_aircraft1+m1*m2*x_aircraft2)/(m2-m1);
   trajectory_target=[trajectory_target; x_position,y_position];
    
    %计算目标的位置坐标
    % 显示结果
    fprintf('时刻 %d:\n', t);
    fprintf('飞机1的位置:(%d, %d)\n', x_aircraft1, y_aircraft1);
    fprintf('飞机2的位置:(%d, %d)\n', x_aircraft2, y_aircraft2);
    fprintf('飞机1测量到的角度:%.10f\n', rad2deg(angle1));
    fprintf('飞机2测量到的角度:%.10f\n\n', rad2deg(angle2));
 fprintf('m1:%.10f\n\n',m1);
      fprintf('m2:%.10f\n\n', m2);
     fprintf('目标X坐标:%.10f\n\n', x_position);
      fprintf('目标Y坐标:%.10f\n\n', y_position);
end
figure;
set(gcf,'color','white');%白色
plot(trajectory_aircraft1(:, 1), trajectory_aircraft1(:, 2), '-', 'LineWidth', 1.5, 'MarkerSize', 2);
hold on;
plot(trajectory_aircraft2(:, 1), trajectory_aircraft2(:, 2), '-', 'LineWidth', 1.5, 'MarkerSize', 2);
plot(x_target, y_target, 'rx', 'MarkerSize', 10, 'LineWidth', 2);
xlabel('X轴');
ylabel('Y轴');
title('飞机运动轨迹和目标点位置');
legend('飞机1', '飞机2', '目标点');
grid on;
% 固定坐标轴范围
xlim([0, 150]); % X轴范围从0到15


x = 200;
y = 200;
figure;
set(gcf,'color','white');%白色

plot(trajectory_target(:, 1), trajectory_target(:, 2), 'gO', 'LineWidth', 1.7, 'MarkerSize', 1.7);
hold on;
plot(x, y, 'rx', 'MarkerSize', 10, 'LineWidth', 2);hold on;
% 固定坐标轴范围
xlim([0, 150]); % X轴范围从0到15
ylim([0, 150]); % Y轴范围从0到15


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 时间
time = 1:100;

% 目标 X 和 Y 方向位置随时间的变化
target_x = trajectory_target(:, 1);
target_y = trajectory_target(:, 2);

% 画出 X 方向位置随时间的折线图
figure;
set(gcf,'color','white');%白色

plot(time, target_x, 'b-', 'LineWidth', 1.5);
title('目标 X 方向位置随时间变化');
xlabel('时间');
ylabel('目标 X 位置');
% xticks(1:1:100); % 设置 x 轴刻度为每秒一个刻度
grid on;

% 画出 Y 方向位置随时间的折线图
figure;
set(gcf,'color','white');%白色
plot(time, target_y, 'r-', 'LineWidth', 1.5);
title('目标 Y 方向位置随时间变化');
xlabel('时间');
ylabel('目标 Y 位置');
% xticks(1:1:100); % 设置 x 轴刻度为每秒一个刻度

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% grid on;% 定义误差半径
% radius = 1; % 这是一个示例值,你可以根据实际情况调整
% 
% % 计算目标实际位置的圆概率误差
% mean_target_position = mean(trajectory_target); % 目标位置均值
% var_target_position = var(trajectory_target);   % 目标位置方差
% 
% % 计算误差范围
% error_radius = sqrt(var_target_position(1)^2 + var_target_position(2)^2);
% 
% % 绘制目标实际位置的圆概率误差
% figure;
% hold on;
% plot(trajectory_target(:, 1), trajectory_target(:, 2), 'gO', 'LineWidth', 1.7, 'MarkerSize', 1.7);
% plot(mean_target_position(1), mean_target_position(2), 'ro', 'MarkerSize', 8, 'MarkerFaceColor', 'r');
% circle(mean_target_position(1), mean_target_position(2), error_radius + radius, 'r'); % 绘制误差范围圆
% xlabel('X 位置');
% ylabel('Y 位置');
% title('目标实际位置及其圆概率误差');
% legend('目标实际位置', '均值', '圆概率误差');
% grid on;
% hold off;
% 
% % 定义绘制圆的函数
% function h = circle(x,y,r,color)
%     hold on;
%     th = 0:pi/50:2*pi;
%     xunit = r * cos(th) + x;
%     yunit = r * sin(th) + y;
%     h = plot(xunit, yunit, 'Color', color);
% end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
close all;
clear;
clc;
%二维坐标,拆分为x ,轴与y轴目标点为(1,1)(2,2)...(6,6)
% 
% x1=mean();%求x平均值
% y1=mean();%求y平均值
% sigma_x=var(x,1);%x的标准差
% sigma_y=var(y,1);%y的标准差
% Cep=sqrt(sigma_x+sigma_y);%圆概率误差
% R=Cep*0.589;%圆概率误差(0.589为覆盖50%点的系数)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值