[m n]=size(a);
l = a(:, 2:n) - a(:, 1:n-1);
u = a(2:m, :) - a(1:m-1, :);
[x y]=find(l == 1);
r=y*m+x-m;
[x y]=find(l == -1);
s=y*m+x-m;
[x y]=find(u == 1);
t=y*m+x-m;
[x y]=find(u == -1);
u=y*m+x-m;
F=sparse([r;s+m;t;u+1],[r+m;s;t+1;u],1,m*n,m*n);
i=1;
G{1}=F;
while any(any(G{i}))
i=i+1;
G{i} = G{i-1}*F;
end % length is
[b e] = find(G{i-1});
for j = 2:i-1
b(j) = find(F(b(j-1),:) & G{i-j}(:, e)');
end
b(i)=e;
b=b';
|