Finding index location in volume?

8 次查看(过去 30 天)
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?

类别

Help CenterFile Exchange 中查找有关 Image Processing Toolbox 的更多信息

产品


版本

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by