完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
求程序流程图,谢谢 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 |
|
相关推荐
5个回答
|
|
偷懒来的吧,自己不会看莫
|
|
|
|
真不会啊,本身对MATLAB不熟悉,,程序是老师给的,,
|
|
|
|
|
|
|
|
谢谢分享
|
|
|
|
呵呵,太懒了??????
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-29 12:38 , Processed in 0.569944 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号