0

请告诉我,是否可以在 GNU Octave 中使用向量作为 3D 数组索引?理想情况下,我想使用向量v作为 3D 数组的索引dg即,将特定的数组元素称为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
4

1 回答 1

0

我不认为这是可能的。您可以编写一个中间函数来sub2ind实现它。

function ind = vec2ind(sz, vec)
    ind = sub2ind(sz, vec(1), vec(2), vec(3)); %//although even better to go vec(:,1) etc...
end

现在您可以替换d(v(1), v(2), v(3))为,d(vec2ind(v))但这真的更好吗?可能最好只接受 Octave 的语法。

于 2013-09-25T13:04:57.223 回答