Recursive pathfinding Index exceeds matrix dimensions
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
The function is supposed to return a path for a mouse to go, which is one of the four corners of the maze. I am trying with recursive. B is a 2 dimensonal metrix, probe is [x y] vector and prevProbe start out as [0 0] This is an error messege I recive on both err1, err2, err3 and err4. identifier: 'MATLAB:badsubscript' message: 'Index exceeds matrix dimensions.' cause: {} stack: [724x1 struct]
function [ route done ] = PathFinder( B, probe, prevProbe )
%PATHFINDER Summary of this function goes here
% Detailed explanation goes here
done = false;
route = [];
e1 = [1 1];
e2 = [size(B,1) 1];
e3 = [1 size(B,2)];
e4 = [size(B,1) size(B,2)];
% = 1 (right), 2 (left), 3 (up), 4 (down)
if isequal(probe, e1) | isequal(probe, e2) | isequal(probe, e3) | isequal(probe, e4)
done = true
return;
route
end
try
if B(probe(1),probe(2)+1) == 0
[route, done] = PathFinder(B, [probe(1) probe(2)+1], probe);
if done
temp = [route getDir(probe, prevProbe)];
route = temp(1);
done = temp(2);
return;
end
end
catch err
err
end
try
if B(probe(1)+1,probe(2)) == 0
[route, done] = PathFinder(B, [probe(1)+1 probe(2)], probe);
if done
temp = [route getDir(probe, prevProbe)];
route = temp(1);
done = temp(2);
return;
end
end
catch err
err
end
try
if B(probe(1),probe(2)-1) == 0
[route, done]= PathFinder(B, [probe(1) probe(2)-1], probe);
if done
temp = [route getDir(probe, prevProbe)];
route = temp(1);
done = temp(2);
return;
end
end
catch err
err
end
try
if B(probe(1)-1,probe(2)) == 0
[route, done] = PathFinder(B, [probe(1)-1 probe(2)], probe);
if done
temp = [route getDir(probe, prevProbe)];
route = temp(1);
done = temp(2);
return;
end
end
catch err
err
end
end
% = 1 (right), 2 (left), 3 (up), 4 (down)
function [dir] = getDir(probe, prevProbe)
temp = probe - prevProbe;
if isequal(temp,[1 0]);
dir = 1;
return;
elseif isequal(temp,[0 1]);
dir = 3;
return;
elseif isequal(temp,[-1 0]);
dir = 2;
return;
elseif isequal(temp,[0 -1]);
dir = 4;
return;
end
end
0 comentarios
Respuestas (0)
Ver también
Categorías
Más información sobre Data Types en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!