求程序流程图,谢谢
for ii=1:ceil(MaxSection)
target_in = 0;
target_in(1:count_i(ii),1:7) = target_i(ii,1:count_i(ii),1:7);
flag_display = 0; %进行比较标志,0进行比较,1退出比较
max_differ_time = 3; %允许的最大不同目标间的时间差值
max_differ_vel = 1;
max_differ_magni = 2;
max_differ_range = 1;
num_save_require = N(p_scanmode_1); %当前比较需要获得的目标数,最初“时间”比较为N,
num_save_sucess = 0; %当前比较后所保存的目标数
pre_num_save_sucess = 0;
num_in = count_i(ii); %当前比较输入的目标数
target_in_tem = 0; %当前比较输出目标
target_tem = 0; %当前比较获得的保存目标
target= zeros(N(p_scanmode_1),NN); %所有比较后目标
num_save_sucess_sum = 1;
flag_v_compare = 1;
%%%%%%%%%%%%% %%%%%%%%%%%%% %%%%%%%%%%%%%
%“时间”比较% %“时间”比较% %“时间”比较%
%%%%%%%%%%%%% %%%%%%%%%%%%% %%%%%%%%%%%%%
if flag_display == 0 && num_in > num_save_require;
%将前"num_save_require"个时间为正值目标赋值于target_tem
ii=1; %"num_save_require"个目标
for i=1:num_in
if ii > num_save_require;
break;
end
if target_in(i,7)>0;
target_tem(ii,1:NN) = target_in(i,1:NN);
ii = ii + 1;
end
end
%target_tem中保存目标的数量
pre_num_save_sucess = ii-1;
left_num = i - 1;
%如果”..“正值目标大于"num_save_require"个,则在本轮进行余下比较(此时剩余的目标中也许存在可能“..”更小目标
if pre_num_save_sucess == num_save_require && left_num ~= num_in;
%1,target_tem中的“num_save_require”个目标按“..”排序
if num_save_require > 1;
for i = 1:num_save_require-1;
for j = i+1:num_save_require;
if target_tem(i,7) > target_tem(j,7);
tem(1:NN) = target_tem(i,1:NN);
target_tem(i,1:NN) = target_tem(j,1:NN);
target_tem(j,1:NN) = tem(1:NN);
end
end
end
end
%2,剩余目标与target_tem中目标“..”比较
for i = 1:num_in;
for j = 1:num_save_require;
result_compare = target_in(i,7) - target_tem(j,7);
if result_compare < 0 && target_in(i,7) > 0;
%最后一个保存的目标被输入目标替代
%前面“num_save_require-1”个目标中一个被目标替代
if j == num_save_require;
target_tem(num_save_require,1:NN)=target_in(i,1:NN);
else
for k=num_save_require:-1:j+1;
target_tem(k,1:NN) = target_tem(k-1,1:NN);
end
target_tem(j,1:NN) = target_in(i,1:NN);
end
break;
elseif result_compare == 0
break;
end
end
end
%3,target_tem和target_in中所有目标间差值在max_differ_..以内的比较,如果
%max_differ_..=0,则严格按大小排序。
if max_differ_time == 0
flag_display = 1; %此时已经有(num_save_sucess)个目标成功保存
target(num_save_sucess_sum:num_save_sucess_sum + pre_num_save_sucess-1,1:NN)=target_tem(1:pre_num_save_sucess,1:NN);
else
if num_save_require > 1
target_compare = 0; %比较值
for i = 1:num_save_require-1
if target_tem(num_save_require,7) - target_tem(i,7) < max_differ_time;
target_compare = target_tem(i,7);
break;
end
end
if target_compare ~= 0; %此刻由于target_tem保存的目标需要比较的数据太相近,所以需要在下轮比较中进行相近数据比较
num_save_sucess = i-1; %成功保存的数据也因此减小
else
num_save_sucess = i;
target_compare = target_tem(num_save_require,7);
end
else
num_save_sucess = 0;
target_compare = target_tem(num_save_require,7);
end
ii = 1; %计数下轮比较的输入目标数
for i=1:num_in;
if target_in(i,7) - target_compare <= max_differ_time && target_in(i,7) - target_compare >= 0 && target_in(i,7) >= 0
target_in_tem(ii,1:NN) = target_in(i,1:NN);
ii = ii+1;
end
end
%target_tem经小范围选择后需要写入目标的剩余的目标的数量
num_in = ii-1;
%如果经有差值比较后剩余目标数 与 成功保存的目标数
%等于需要得保存的目标数则不用再进行比较了
if num_save_sucess + num_in == num_save_require;
flag_display = 1;
num_save_sucess = num_save_require;
target(num_save_sucess_sum:num_save_sucess_sum + num_save_sucess-1,1:NN)=target_tem(1:num_save_sucess,1:NN);
num_save_sucess_sum = num_save_sucess_sum + num_save_sucess;
else
target_in = zeros(num_in,NN);
target_in = target_in_tem;
num_save_require = num_save_require - num_save_sucess;
for i=1:num_save_sucess;
target(num_save_sucess_sum+i-1,1:NN)=target_tem(i,1:NN);
end
num_save_sucess_sum = num_save_sucess_sum + num_save_sucess;
num_save_sucess = 0;
target_tem = 0;
target_in_tem = 0;
end
end
%输入目标中的“..”的正值数量刚好等于需要显示的目标的数量(此种情况仅存在于比较数据中存在负数)
elseif pre_num_save_sucess == num_save_require && left_num == num_in;
flag_display = 1;
target(num_save_sucess_sum:num_save_sucess_sum + pre_num_save_sucess-1,1:NN)=target_tem(1:pre_num_save_sucess,1:NN);
%输入目标中的“..”的正值数量小于需要显示的目标的数量 (此种情况仅存在于比较数据中存在负数)
elseif pre_num_save_sucess < num_save_require && left_num == num_in;
flag_v_compare = 0;
flag_display = 0;
ii=1;
for i=1:num_in
if target_in(i,7) <= 0;
target_in_tem(ii,1:NN)=target_in(i,1:NN);
ii = ii + 1;
end
end
num_in = ii - 1;
target_in = zeros(num_in, NN);
target_in = target_in_tem;
num_save_require = num_save_require - pre_num_save_sucess;
if pre_num_save_sucess > 0;
target(num_save_sucess_sum:num_save_sucess_sum + pre_num_save_sucess-1,1:NN)=target_tem(1:pre_num_save_sucess,1:NN);
end
num_save_sucess_sum = num_save_sucess_sum + pre_num_save_sucess;
target_tem = 0;
target_in_tem = 0;
end
elseif flag_display == 0 && num_in <= num_save_require;
flag_display =1;
target(num_save_sucess_sum:num_save_sucess_sum + num_in-1,1:NN)=target_in(1:num_in,1:NN);
end
1