% 定义雷达参数
r = 10000;   % 雷达最大范围半径
theta_min = pi/24;  % 扇形起始角度
theta_max = 5*pi/12;  % 扇形终止角度
t = 1; % 时间间隔
T = 30;   % 总仿真时间

% 生成极坐标并转换为笛卡尔坐标
theta = linspace(theta_min, theta_max, 360);
x_scan = r * cos(theta);
y_scan = r * sin(theta);

% 设置初始目标数量和初始位置数组
num_targets = 3;  % 目标数量
x0 = [2000, 3000, 4000];  % 初始x坐标数组
y0 = [4000, 5000, 6000];  % 初始y坐标数组
z0 = [0, 100, 200];  % 初始z坐标数组

% 绘制扇形
figure;
plot(x_scan, y_scan);

x1 = x_scan(1);
y1 = y_scan(1);

% 提取末端点
x2 = x_scan(end);
y2 = y_scan(end);

% 显示端点坐标
% disp(['起点坐标:' num2str(x1) ',' num2str(y1)]);
% disp(['终点坐标:' num2str(x2) ',' num2str(y2)]);

% 在句柄上添加线段
line([0 x1],[0 y1]);
line([0 x2],[0 y2]);

% 设置坐标轴范围及属性
axis equal;
xlim([0 r]);
ylim([0 r]);

% 存储目标坐标的列表
target_list = [];

% 初始化目标编号
target_num = 1;

for t = 0:t:T
    % 生成目标坐标
    targets_x = x0 + [100 -100 200] * t;  % 每个目标在x轴上的位置随时间变化
    targets_y = y0 + [20 40 60] * t;  % 每个目标在y轴上的位置随时间变化
    targets_z = z0 + 0.01 * t;  % 每个目标在z轴上的位置随时间变化
    
    % 将目标坐标添加到列表中
    target_list = [targets_x; targets_y; targets_z]';
    
    % 遍历目标列表,进行判断和显示
    for i = 1:size(target_list, 1)
        target_x = target_list(i, 1);
        target_y = target_list(i, 2);
        target_z = target_list(i, 3);
        
        % 判断目标是否在扇形区域内
        if target_x <= r && target_y <= r && target_x >= 0 && target_y >= 0
            target_distance = sqrt(target_x^2 + target_y^2); % 计算目标距离
            if target_distance <= r && target_z <= r
                angle = atan2(target_y, target_x);
                if angle >= theta_min && angle <= theta_max
                    disp(['识别到目标,坐标是(' num2str(target_x) ',' num2str(target_y) ',' num2str(target_z) ')']);
                    hold on;
                    plot(target_x, target_y, 'ro', 'MarkerFaceColor', 'r'); % 识别到目标,红色小圆点
                else
                    disp('未识别到目标');
                    hold on;
                    plot(target_x, target_y, 'yo', 'MarkerFaceColor', 'b'); % 未识别到目标,蓝色小圆点
                end
            else
                disp('未识别到目标');
                hold on;
                plot(target_x, target_y, 'yo', 'MarkerFaceColor', 'b'); % 未识别到目标,蓝色小圆点
            end
        else
            disp('未识别到目标');
            hold on;
            plot(target_x, target_y, 'yo', 'MarkerFaceColor', 'b'); % 未识别到目标,蓝色小圆点
        end
        
        % 增加目标编号
        target_num = target_num + 1;
    end
    
    pause(0.1); % 暂停一段时间,以便观察效果
end
disp('目标移动点矩阵:');
disp(target_list);

原文地址: https://www.cveoy.top/t/topic/crec 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录