# Why Contour matrix M ( [M,c] = contour(__) ) contains the data points exceeding xmax/ymax?

46 views (last 30 days)
Sergii Snegir on 2 Mar 2021
Edited: Bruno Luong on 2 Mar 2021
I have a contour plot (fig 1), plotted according to [M,h]=contourf(f,8). With this I slice contour #8. Thus, I expect to have in matrix M all (x,y) coordinates of the 8th contour. These coordinates have (logically) not to exceed the xmax/ymax (250/250). Instead, when I plot matrix M i have some values that larger then xmax/ymax (figure 2). According to the documentation (https://de.mathworks.com/help/matlab/ref/contour.html#mw_27139ced-212f-437f-abab-0ff7c175e33b),
the first pair of data is the Level and the number of Vertices. But plotting the contour(f,8) in Fig1 I should have only first pair of data in returned M which describe the leve 8 l!!!
Please explain their origin of larger data.
Figure 1
Figure 2 (Plotted M)
Sergii Snegir on 2 Mar 2021
many thanks. The documentation about Matlab is very unclear sometimes, I need to say.
Have a nice evening.

Bruno Luong on 2 Mar 2021
Edited: Bruno Luong on 2 Mar 2021
[M,h]=contourf(f,8)
Return contours of 8 levels, not single level of value 8.
##### 2 CommentsShowHide 1 older comment
Bruno Luong on 2 Mar 2021
The doc
"Use this argument to control the number and location of the contour lines. When you do not specify the levels, the contour function chooses the levels automatically.
• To draw contour lines at n automatically chosen heights, specify levels as the scalar value n.
• To draw the contour lines at specific heights, specify levels as a vector of monotonically increasing values.
• To draw contour lines at a single height k, specify levels as a two-element row vector [k k]."
I don't know what *you* see on your image, if I do this
f=peaks;
[M,h]=contourf(f,8)
I get this contour plot like there are 8 "heights" to me (counted from bright yellow to dark blue):