请告诉我,是否可以在 GNU Octave 中使用向量作为 3D 数组索引?理想情况下,我想使用向量v
作为 3D 数组的索引d
,g
即,将特定的数组元素称为d(v)
和g(v)
,而不是使用繁琐的表达式d(v(1),v(2),v(3))
。一定有更优雅的方式。请看下面的例子:
% specify coordinate shift to ensure positive indices
cs = [ni nj nk]
% loop over source cell coordinates
for i1 = 1:ni
for j1 = 1:nj
for k1 = 1:nk
% specify source cell coordinates
r1 = [i1 j1 k1];
% loop over test cell coordinates
for i2 = 1:ni
for j2 = 1:nj
for k2 = 1:nk
% specify test cell coordinates
r2 = [i2 j2 k2];
% calculate index vector
v = r1-r2+cs;
% calculate Euclidean distance between source and test cell centres
d(v(1), v(2), v(3)) = norm(r1-r2);
g(v(1), v(2), v(3)) = exp(-img*k*d(v(1), v(2), v(3))) / 4.0 / pi / d(v(1), v(2), v(3));
endfor
endfor
endfor
endfor
endfor
endfor