distance between a point and elements of a matrix

조회 수: 2 (최근 30일)
Luis Isaac
Luis Isaac 2017년 4월 12일
답변: Luis Isaac 2017년 4월 21일
Dear;
I am looking for an efficient way to compute the distance between coordinates (x,y,z) and the elements of a 3D matrix. For expample for a M3D[1:nx,1:ny,1:nz] I would like to get ahother 3D matrix Distance3D where each element in the new matrix will be:
M3D(ix,iy,iz)=sqrt((ix-x)^2+(iy-y)^2+(iz-z)^2);
Where ix runs for 1 to nx, so on.
Thanks in advance;

채택된 답변

Luis Isaac
Luis Isaac 2017년 4월 21일
This could be the solution
[ny,nx,nz]=size(M3D);
[xx,yy,zz] = meshgrid((1:nx)-x,(1:ny)-y,(1:nz)-z);
M3D_dist=sqrt(xx.^2 + yy.^2 + zz.^2);

추가 답변 (2개)

Fei Deng
Fei Deng 2017년 4월 17일
Are you calculating the distance between coordinates (x,y,z) and the elements of a 3D matrix, OR the distance between coordinates (x,y,z) and the index of a 3D matrix? From your equation, it should be latter case, isn't it? In that case, I probably would just use 3 for-loops.

Luis Isaac
Luis Isaac 2017년 4월 21일
Many Thanks
Yes it is the second; I am traing to calculate de distance from a point with coordinates (x,y,z) and the indexes of a 3D matrix. Of course, 3 for-loops is one of the solution the question, but I am looking for a vectoriced and quicker version of this problem.

카테고리

Help CenterFile Exchange에서 NaNs에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by