【问题标题】:indexing an m-dimensional array in Matlab (with m not constant) [duplicate]在Matlab中索引m维数组(m不是常数)[重复]
【发布时间】:2017-11-13 16:35:55
【问题描述】:

我在 Matlab 中有一个索引问题。假设我有一个 m 维数组 A,其中 m 取决于问题

假设我有带索引的向量

x = [i2, ..., im]

我想取矢量

A(:, i_2, ..., i_m)

。如果 m 在所有情况下都是恒定的,那并不难。你可以说

i_j = x(j), j = 2, ..., m

。是否可以在没有 if 循环的情况下执行此操作 (所以不用说'if m == 2 then .. if m == 3 then ...' 等等)?

感谢您的帮助

【问题讨论】:

    标签: arrays matlab multidimensional-array


    【解决方案1】:

    这可以很容易地将x 转换为元胞数组并从中生成comma-separated list

    A = rand(3,3,3,3,3); % example A
    x = [2 1 3 2]; % example x
    ind = num2cell(x);
    result = A(:, ind{:});
    

    【讨论】:

    • 谢谢,这正是我想要的:-)
    • 一个巧妙的小技巧:您可以将':' 添加到您想要的单元格数组中。例如:ind = [{':'} num2cell(x)]; result = A(ind{:});
    猜你喜欢
    • 1970-01-01
    • 2016-07-02
    • 2013-05-30
    • 2021-12-02
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    相关资源
    最近更新 更多