필터 지우기
필터 지우기

Compare two matrices/m​eshgrid/su​rface/ model digital - distance between models - point data - 3D mesh

조회 수: 8 (최근 30일)
<<
>>
I have 3 vectors fo each surface (meshgrid). I want to compare the distance between this to surfaces. The problem is that to surfaces are not in the same position and the cells of the meshgrid are not on the same size. What i can do to obtain the correct distance between of this tow models?
surf(X,Y,Z); hold on; grid on; hold on, scatter3(NF_P(:,1),NF_P(:,2),NF_P(:,3),'filled'); surfl(X2A,Y2A,Z2A); hold on; scatter3(DD_B2(:,1),DD_B2(:,2),DD_B2(:,3)*(-1),'filled')
i want the difrence between Z and Z2A, but X and Y are difrent from X2A and Y2A.
i make Z3=Z-Z2A, bu is not correct that giv me difrences of 4 meters , that is not true, soo i dont know how to make this analyse

채택된 답변

Nicola Bombace
Nicola Bombace 2018년 5월 23일
편집: Nicola Bombace 2018년 5월 23일
The first thing you want to do is interpolate the data from one surface to be at the x,y position of the second surface. Then compute the distance from the interpolated surface
Z_int = griddata(X,Y,Z,X2A,Y2A); %interpolate surface 1 to match x,y coordinates of surface 2
Z3 = Z_int - Z2A;
Just two more comments
  • Obviously you can think about starting from surface 2 to match the x and y of surface 1. The difference in the result should be negligible, but this depends on the data.
  • I would suggest another measure of the distance, because you can imagine that if the two surfaces cross each other you could have a distance of zero, when actually is not. I would square the difference vector and take its square root as a first attempt.
Hope this helps
  댓글 수: 6
Octavian Macari
Octavian Macari 2018년 5월 24일
We have programs that do that but all it is payed and not accessible, more for hydrografic institution, like "CARIS HIPS & SHIPS". My thesis is based on creat a metodology to process the data.
Nicola Bombace
Nicola Bombace 2018년 5월 29일
The issue of cleaning the points is not trivial. I can suggest an algorithm, rather than a specific implementation, and hopefully it will be easy to implement.
  1. Construct the Mesh with the original points using the delaunayn function
  2. Determine if a query point is inside your delaunay triangulation using pointLocation function

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Octavian Macari
Octavian Macari 2018년 5월 27일
Hello, About what you suggest, "I would suggest another measure of the distance, because you can imagine that if the two surfaces cross each other you could have a distance of zero, when actually is not. I would square the difference vector and take its square root as a first attempt."
did you mean something like that: Zsq = sqrt(Z.^2 - Z2A.^2); that give-me error, i have the matriz with i value
(...2.3032 + 0.0000i ; NaN + 0.0000i ; NaN + 0.0000i ; NaN + 0.0000i ...)
i can´t figure what you sugest
  댓글 수: 1
Nicola Bombace
Nicola Bombace 2018년 5월 29일
If you were to use the code above (the second comment), you could just do:
distMeasure = sqrt(norm(diff));
This will give you a single number that measures the distance of the two surfaces.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by