distance between a point and elements of a matrix

2 vues (au cours des 30 derniers jours)
Luis Isaac
Luis Isaac le 12 Avr 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;

Réponse acceptée

Luis Isaac
Luis Isaac le 21 Avr 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);

Plus de réponses (2)

Fei Deng
Fei Deng le 17 Avr 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 le 21 Avr 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.

Catégories

En savoir plus sur NaNs dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by