% 定义目标点位置
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%点的系数)
AOA二维出结果图代码,笔记
最新推荐文章于 2024-07-15 15:20:24 发布