How can I smooth 'trisurf' surface-plot?
조회 수: 18 (최근 30일)
이전 댓글 표시
How can I smooth the surface generated by 'trisurf' command?
% initially, x, y, z are coordinates of scattered data
x = scatteredValuesX;
y = scatteredValuesY;
z = scatteredValuesZ;
% to create a surface from the scattered data, a triangulation is used
% this method is suggested here: https://au.mathworks.com/matlabcentral/fileexchange/5105-making-surface-plots-from-scatter-data
tri = delaunay(x,y);
trisurf(tri, x, y, z);
The result is very noisy and I would like to smooth the surface, but I have not yet discovered the way of how to achieve this goal.
I have found a function 'smoothn' here which could potentially achieve what I need, but I am not sure if it is possible to adapt my data in order to feed this function properly.
Any input would be appreciated.

댓글 수: 0
답변 (1개)
Satwik
2025년 4월 22일
Hi,
Here is workflow using which surface smoothening can be achieved for data plotted with 'trisurf', using 'smoothn':
1) Interpolation onto a grid: The scattered data are first interpolated onto a regular grid, which allows 'smoothn' to be used
% Define a grid
[xq, yq] = meshgrid(linspace(min(x),max(x),100), linspace(min(y),max(y),100));
% Interpolate scattered data onto the grid
zq = griddata(x, y, z, xq, yq, 'natural');
2. Smoothing the Surface:
zq_smooth = smoothn(zq); % 'smoothn' is available from the File Exchange
3. Plotting the Smoothed Surface: The smoothed surface is plotted with 'surf', not 'trisurf', since the data are now on a grid.
surf(xq, yq, zq_smooth, 'EdgeColor', 'none');
view(3); axis tight;
I hope this helps!
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!