how to show only a part of a surface fit that falls within a certain polygon

Hi, i have created a surface fit using the next code:
*ft = 'thinplateinterp';
[fitresult, gof] = fit( [xData, yData], zData, ft );*
the next thing i want to do is to plot that surface, so i use:
*figure( 'Name', 'untitled fit 2' );
h = plot(fitresult);*
the problem is that it creats the surface over areas that i am not intrested in, so i have two parameters x and y that creats a closed polygon and i would like to show the part of the surface that falls within this polygon. how can i do it? is it even possible?
thank you for your help

 Respuesta aceptada

The simplest is to set zData to nan for the points you want to discard. Consider this example:
[x,y,z] = peaks;
px = [0 4 2];
py = [-1 -1 2];
inpts = inpolygon(x,y,px,py);
z(inpts) = nan;
surf(x,y,z)

3 comentarios

it is the simplest way but it won't work here because when i use the
[fitresult, gof] = fit( [xData, yData], zData, ft );
command i dont have access to the "fitresult" variable which holds the z components of the fitted surface.
also, i want to discard data outside the polygon and not inside.
When you said "show" I assumed you meant you wanted to modify the surface which gets created by the plot method. Also, to discard the data outside, just do z(~inputs). Like so:
[x,y,z] = peaks;
f = fit([x(:),y(:)],z(:),'poly23');
h = plot(f);
px = [-1 3 3 2 2 0 0 -1];
py = [-1 -1 0 0 1 1 0 0];
inpts = inpolygon(h.XData,h.YData,px,py);
h.ZData(~inpts) = nan;
ok. thank you. but one problem though.
when i write
inpts = inpolygon(h.XData,h.YData,px,py);
i get this error:
Attempt to reference field of non-structure array.
it is like "h" does not have any properties.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Line Plots en Centro de ayuda y File Exchange.

Productos

Preguntada:

el 12 de Feb. de 2015

Comentada:

el 15 de Feb. de 2015

Community Treasure Hunt

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

Start Hunting!

Translated by