how to show only a part of a surface fit that falls within a certain polygon
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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
0 commentaires
Réponse acceptée
Mike Garrity
le 12 Fév 2015
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 commentaires
Mike Garrity
le 12 Fév 2015
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;
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Surface and Mesh Plots dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!