在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
a(uint16(rand * (length(a) - 1) + 1)) 其中:2 要在整个人工鱼区域内取出除障碍物以外的可行域,使用 stediff函数。 allow = setdiff(1:1:n^2,Barrier); 算法描述如下:for i = 1:1:length(allow) if distance(n,ppValue,allow(i)) <=rightInf && 0 < distance(ppValue,allow(i)) allow_area(j) = allow(i); j = j+1; end end %distance是为了求解距离是否在(0,sqrt(2)]之间。 3 tic---toc放在程序的开始和结束,可以显示运行程序的时间。 4 取得栅格地图中的障碍物集合 Barrier = (find(a==0))';%Barrier转换成行向量。 5 在算法的测试阶段,发现仅仅执行觅食行为,会导致算法陷入局部最优解,状况如下: 在图中230 ,208处,出现跳跃,是应为,陷入局部最优解。解释如下: (12,10)----230,d1 (11, 8)-----208,d2 di (i=1,2,...),为当前位置到Goal位置的欧氏距离。 d1 = sqrt((12-20)^2+(10-0)^2) = sqrt(164); d2 = sqrt((11-20)^2+(8-0)^2) = sqrt(145); d2<d1,所以d2优于d1,即208,比230更加接近goal,在欧式距离上。 而230的可行域只有,210,和211,他们们到goal的距离都大于208都不是最优解,所以算法在此处陷入局部最优解。 在加入追尾和群居算法后,可改善这个问题的出现。 6 在群聚和追尾行为中,要求附近鱼群的中心点Xc,因为在栅格中处理不存在小数,所以要取整化 使用如下函数: floor、ceil、round、fix floor:朝负无穷方向靠近最近的整数; ceil:朝正无穷方向靠近最近的整数; round:取最近的整数(相当于四舍五入 fix:取离0最近的整数 7 Matlab有for ,while两种循环方式但是区别很大, for i = ..... %修改i的值; end 运行结果,在循环中i的值是不会受影响的 %初始化i while i<... %修改i的值 end 运行结果,i的值会直接被修改。 8 Matlab中找出两个矩阵公共元素 intersect a = [ 4 3 6 8 0 1]; b = [ 1 2 3 5 7 0 9 10]; [c,ia,ib] = intersect(a,b) 运行结果: c = 3 9 在MATLAB中使用[c,ia,ib] = intersect(a,b)函数获得两个矩阵的公共部分时,ib中的顺序不在保持原样了,被重新排列了,要注意。可以通过sort函数还原 10 当前程序处理完后,可直接用cftool命令调出界面,拟合曲线 11 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论