资源简介
A*算法 A star 算法(matlab)
代码片段和文件信息
clc
clear all
m = 30;n = 30;
Spoint = [3 3];
Epoint = [29 22];
%%地图
for i = 1:m+2
if i == 1
for j = 1:n+2
Matrix(ij) = -inf;
end
elseif i == m+2
for j = 1:n+2
Matrix(ij) = -inf;
end
else
for j = 1:n+2
if ((j == 1)|(j == n+2))
Matrix(ij) = -inf;
else
Matrix(ij) = inf;
end
end
end
end
%%障碍
for j=2:10
Matrix(5j)=-inf;
for j=2:15
Matrix(24j)=-inf;
for j=9:24
%for j=6:24
Matrix(10j)=-inf;
for j=20:31
Matrix(15j)=-inf;
for j=5:20
Matrix(20j)=-inf;
for j=18:27
Matrix(28j)=-inf;
for i=2:6
Matrix(i18)=-inf;
for i=17:20
Matrix(i5)=-inf;
for i=23:25
Matrix(i20)=-inf;
for i=13:17
Matrix(i13)=-inf;
end
end
end
end
end
end
end
end
end
end
%end
%subplot(221);
h1 = plot(Spoint(1)Spoint(2)‘gO‘);
hold on
h2 = plot(Epoint(1)Epoint(2)‘rO‘);
%%寻路
Matrix(Spoint(1)Spoint(2))=0;
Matrix(Epoint(1)Epoint(2))=inf;
G=Matrix;
F=Matrix;
openlist=Matrix;
closelist=Matrix;
parentx=Matrix;
parenty=Matrix;
openlist(Spoint(1)Spoint(2)) =0;
%closelist(Epoint(1)Epoint(2))=inf;
for i = 1:n+2
for j = 1:m+2
k = Matrix(ij);
if(k == -inf)
%subplot(221);
h3 = plot(ij‘k.‘);
% elseif(k == inf) % show green feasible point
% %subplot(221);
% plot(ij‘gh‘);
% else
% %subplot(221);
% plot(ij‘gh‘);
end
hold on
end
end
axis([0 m+3 0 n+3]);
%subplot(221);
plot(Epoint(1)Epoint(2)‘b+‘);
%subplot(221);
plot(Spoint(1)Spoint(2)‘b+‘);
while(1)
num=inf;
for p=1:m+2
for q=1:n+2
if(openlist(pq)==0&&closelist(pq)~=1)
Outpoint=[pq];
if(F(pq)>=0&&num>F(pq))
num=F(pq);
Nextpoint=[pq];
end
end
end
end
closelist(Nextpoint(1)Nextpoint(2))=1;
for i = 1:3
for j = 1:3
k = G(Nextpoint(1)-2+iNextpoint(2)-2+j);
if(i==2&&j==2|closelist(Nextpoint(1)-2+iNextpoint(2)-2+j)==1)
continue;
elseif (k == -inf)
G(Nextpoint(1)-2+iNextpoint(2)-2+j) = G(Nextpoint(1)-2+iNextpoint(2)-2+j);
closelist(Nextpoint(1)-2+iNextpoint(2)-2+j)=1;
elseif (k == inf)
distance=((i-2)^2+(j-2)^2)^0.5;
G(Nextpoint(1)-2+iNextpoint(2)-2+j)=G(Nextpoint(1)Nextpoint(2))+distance;
openlist(Nextpoint(1)-2+iNextpoint(2)-2+j)=0;
% H=((Nextpoint(1)-2+i-Epoint(1))^2+(Nextpoint(2)-2+j-Epoint(2))^2)^0.5;%欧几里德距离启发函数
H_diagonal=min(abs(Nextpoint(1)-2+i-Epoint(1))abs(Nextpoint(2)-2+j-Epoint(2)));%比较复杂的对角线启发函数
H_strai
- 上一篇:Beale函数matlab程序
- 下一篇:克里金差值matlab程序完整整理版
相关资源
- 基于小波变换的数字水印算法115024
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- Dstar(动态路径规划)算法62845
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
评论
共有 条评论