【问题标题】:Returning specific items from an array given an array of coordinates in MATLAB给定 MATLAB 中的坐标数组,从数组中返回特定项
【发布时间】:2014-07-25 20:54:47
【问题描述】:

假设我有一些(数字)数组A_array,大小为N1xN2xN3,还有两个向量数组x = [x1,x2, ... ,xn]y = [y1,y2, ... ,yn],其中size(x) = size(y)(where n < N1,N2,N3)

现在我正在尝试在(t,x1,y1)(t,x2,y2)etc. 处获取A_array 中的值,因此结果是一个如下所示的数组: [A_array(t,x1,y1), A_array(t,x2,y2), ... , A_array(t,xn,yn)]

我尝试编写A_array(t,x,y),但这会返回一个nxn 数组,这不是我想要的。 我已经尽力把问题写成文字了…… 这是否也可以推广到多个列表,即x,y,z,etc.

【问题讨论】:

    标签: arrays matlab function cell-array


    【解决方案1】:

    使用 sub2ind 如此处所示 -

    A_array = A(sub2ind(size(A),repmat(t,1,numel(x)),x,y))
    

    对于以xyzz2 等为索引数组的高维数组情况,只需像这样附加它们 -

    A_array = A(sub2ind(size(A),repmat(t,1,numel(x)),x,y,z,z2))
    

    如果t 用于索引到其他维度,例如可能是第 3 维度 -[A_array(x1,y1,t), A_array(x2,y2,t), ... , A_array(xn,yn,t)],则相应地更改 tsub2ind 内的位置。因此,对于这个修改过的案例,您将拥有 -

    A_array = A(sub2ind(size(A),x,y,repmat(t,1,numel(x))))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2018-12-11
      • 2017-10-18
      • 1970-01-01
      • 2022-01-24
      • 2016-11-26
      • 1970-01-01
      相关资源
      最近更新 更多