distance between a point and elements of a matrix

8 Ansichten (letzte 30 Tage)
Luis Isaac
Luis Isaac am 12 Apr. 2017
Beantwortet: Luis Isaac am 21 Apr. 2017
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;

Akzeptierte Antwort

Luis Isaac
Luis Isaac am 21 Apr. 2017
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);

Weitere Antworten (2)

Fei Deng
Fei Deng am 17 Apr. 2017
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 am 21 Apr. 2017
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.

Kategorien

Mehr zu Cartesian Coordinate System Conversion finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by