资源简介
a星算法matlab实现 还有c++实现的算法
代码片段和文件信息
%function astar(mapdataNode)
tic
%=============数据=====================
load (‘map.mat‘);
map =map([1:10][1:10]);
% block = [
% 0110000110;
% 0110001000;
% 0000001110;
% 0000000000;
% 0000000000;
% 0000000000;
% 0000000000;
% 0000000000;
% 0000000000;
% 0000000000;
% ];
% map = block;
map=fliplr(map‘)
startNode=[5 5];
endNode =[7 7];
%endNode =[9 10];
dataNode=[startNode;endNode]
%================================
m = 10;n = 10;%表示不含四周墙的地图 行数 列数
Spoint = [2 2];% 开始点
%Spoint = [3 3];
Epoint = [m+1 n+1];%接受点
%%//障碍表
block = [
0100000000;
0110111000;
0000000000;
1110100000;
0100101110;
0100111110;
0001100010;
0100001010;
0111011011;
0000001000;
];
%========map 判空是否有效========
[m n] = size(map);
if ([m n] ~= [0 0])
block =map;
m = m;
n = n;%表示不含四周墙的地图 行数 列数
else
if([dataNode(21) dataNode(22)] > [m n])
dataNode(2:)= [m n]
end
end
Spoint = dataNode(1:)+1;% 开始点
Epoint =dataNode(2:)+1;%接受点
%%地图
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
%%向地图添加障障碍
%Matrix = zeros(size(block));
for i = 1:m
for j=1:n
if(block(ij)==1)
Matrix(i+1j+1)=-inf;% 这是四周加墙的缘故
elseif(block(ij)==0)
Matrix(i+1j+1)=inf;%
else
Matrix(i+1j+1)=inf;%
end
end
end
subplot(131);
plot(Spoint(1)Spoint(2)‘r+‘);
%%寻路
Matrix(Spoint(1)Spoint(2))=0;
Matrix(Epoint(1)Epoint(2))=inf;
G=Matrix;%计算值G
F=Matrix;%F
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(131);
plot(ij‘r.‘);
elseif(k == inf)
subplot(131);
plot(ij‘gh‘);
else
subplot(131);
plot(ij‘gh‘);
end
hold on
end
end
title(‘A*‘);
axis([0 m+3 0 n+3]);
subplot(131);
plot(Epoint(1)Epoint(2)‘b+‘);
subplot(131);
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];%第一次 起始
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7723 2017-04-27 11:19 astar.m
文件 719 2017-04-23 19:23 map.mat
文件 186720 2017-04-21 11:32 AStar.zip
----------- --------- ---------- ----- ----
195162 3
- 上一篇:基于C语言的快速傅里叶变换FFT算法含详细注释
- 下一篇:数据结构编程题目及答案
相关资源
- 梅尔倒谱系数MFCC的matlab代码
-
利用ja
vasc ript在网页实现八数码启 - 音频感知哈希函数的提取matlab codes
- 第一代curvelet变换matlab程序
- 利用MATLAB 改写的基于c++的模糊逻辑
- A*算法解决八数码问题C++
- matlab 调用face_landmark接口
- A星算法,A*算法C++实现,8数码求解
- matlab的SVM工具包
- 基于MATLAB使用C语言的读取GPS的rinex的
- 扩展卡尔曼滤波程序(matlab)
- FFT 和IFFT基二的C语言和MATLAB实现
- 数字信号处理课设报告 低比特率图像
- MFCC梅尔倒谱参数及matlab代码
- NUFFT的matlab算法
- 语音情感识别matlab源代码.zip
- 人工势场法C++版及利用opencv(or matl
- 基于遗传算法的随机规划matlab
- 图像融合 NSCT算法 matlab
- 迷宫问题A*算法
- 用matlab调用c程序
- 时空上下文视觉跟踪STC含有matlab和c
- 语音识别MFCC特征提取matlab代码
- 基于MATLAB的温度场模拟
- 基础版小波变换的Mallat算法含C和mat
- MFCC参数提取的matlab实现
- DWA算法验证
- Itti视觉注意模型Matlab
- BP算法程序实现包括matlab、C语言、C
- c++ 实现matlab smooth 函数
评论
共有 条评论