function B = regionborder(G)

% G - матрица, возвращаемая функцией numgrid
% B - то, что останется от G, если убрать внутренние точки

[m, n] = size(G);

inner = find(G);
border = [];  % номера граничных точек
for k = [-1, 1, -m, m, -1-m, -1+m, 1-m, 1+m] 
   % точка - граничная, 
   % если по крайней мере одна из восьми соседних 
   % не принадлежит области
% for k = [-1, 1, -m, m] 
   % точка - граничная, 
   % если справа или слева или снизу или сверху есть точка, 
   % не принадлежащая области
   border = [border; inner(G(inner + k) == 0)];
end;

B = zeros(size(G)); 
B(border) = G(border);

