Recursive pathfinding Index exceeds matrix dimensions
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (0)
Siehe auch
Kategorien
Mehr zu Data Types finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!