Recursive pathfinding Index exceeds matrix dimensions

조회 수: 7 (최근 30일)
Peter Jensen
Peter Jensen 2016년 4월 20일
편집: Peter Jensen 2016년 4월 20일
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개)

카테고리

Help CenterFile Exchange에서 Data Types에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by