Armed with your function from above, we can do some interesting things. For instance, any pixel where the offsets are both zero is a pit (lower than all surrounding points). Note that every boundary pixel is a pit, so make sure you ignore them in your code. For this second part, write a function:
function rc = findpits(map)
that will return a matrix containing 2 columns with the row and column indices of all non-boundary pits in map. Notice that you can actually then find the non-boundary peaks with the same function, by simply calling it another way: findpits(-map) (think about why this works). Report how many non-boundary pits and peaks are on the map, and plot them as follows:
pits = findpits(map);
peaks = findpits(-map);
imagesc(map); colormap(gray); axis equal
hold on
plot(pits(:,2),pits(:,1),'ro');
plot(peaks(:,2),peaks(:,1),'g+');
hold off
Note: Your findpits() function will probably call findLowNhbr() from Part 1. That is, in your findpits function, you will find lowest neighbours for all points, and then figure out which points are pits.
Note: When plotting, notice that rows are y-coordinates and columns are x-coordinates, which explains their order in the plot command (2^{nd} column, then 1^{st} column). We'll keep talking about rows & columns in the hope it is clearer, but remember that rows indices translate into y-coordinates, and column indices into x-coordinates.
To help you check if your code is working, according to my code, test (the 10x10 test map) has pits at (3,6), (6,3), and (6,6) and peaks at (5,5) and (8,5).
What to submit: Include the m-file for findpits in your zip file. In solutionWatersheds.m, call this function with the provided elevation map ('map'), and generate a figure like the one above, showing all the pits and peaks. Also print out the number of peaks and pits you found.