Finding index location in volume?

조회 수: 2 (최근 30일)
Syed Abdul Salam
Syed Abdul Salam 2019년 9월 16일
댓글: Syed Abdul Salam 2019년 9월 16일
For instance, I have
x = 2000:0.5:2004; y = 45000:0.3:45009; z = 10:0.2:12;
which are axes of a volume, x has length of 9, y has 31 and z has 11.
Now a volume filled of nan values and given by;
C = rand(9,31,11)*nan;
I want to fill this volume with values when new values come up, it will have x, y, z and the corresponding value. So, I need to find the closest index location and fill the value there. E.g.
x =2002.13, y = 45006.811, z = 11.36 have value of 10000 so i want to fill the corresponding C(x,y,z) = 10000;
here I need to find the index for x = 2002, y = 45006.9, z = 11.4 and fill the value 10000 there in C.
how can I use the values converted to closed index in the volume. Thanks

채택된 답변

Andrei Bobrov
Andrei Bobrov 2019년 9월 16일
x = 2000:0.5:2004;
y = 45000:0.3:45009;
z = 10:0.2:12;
x0 = 2002.13;
y0 = 45006.811;
z0 = 11.36;
C = nan(9,31,11);
C0 = 1000;
[~,ii] = min(abs(x - x0));
[~,jj] = min(abs(y - y0));
[~,k] = min(abs(z - z0));
C(ii,jj,k) = C0;

추가 답변 (1개)

Nicolas B.
Nicolas B. 2019년 9월 16일
Hi,
for your case, I would write your code like that:
x = 2000:0.5:2004; y = 45000:0.3:45009; z = 10:0.2:12;
% no need to use rand() to generate a table of NaN and it's more flexible with automatic size
C = NaN(length(x), length(y), length(z));
% your points
pts = [2002.13, 45006.811, 11.36];
% your coordinates
[~, xc] = min(abs(x - pts(1)));
[~, yc] = min(abs(y - pts(2)));
[~, zc] = min(abs(z - pts(3)));
% your value
C(xc, yc, zc) = my_value;
Do it help you?
  댓글 수: 1
Syed Abdul Salam
Syed Abdul Salam 2019년 9월 16일
Yes, thank you. Both works perfectly.

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

카테고리

Help CenterFile Exchange에서 3-D Volumetric Image Processing에 대해 자세히 알아보기

제품


릴리스

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by