【问题标题】:Using multiple indicies to grab values from 2D MATLAB array without returning all combinations [duplicate]使用多个索引从二维 MATLAB 数组中获取值而不返回所有组合 [重复]
【发布时间】:2017-03-15 19:45:21
【问题描述】:

我正在尝试从二维矩阵中获取一些值

考虑起始矩阵:

>> test = randi(10,10)

test =

10     4     8     7    10     4     2     8     4     1
 6     5     6     5     5     2    10     4     7     6
 7     2     5     4     1     1     3     7     6     1
 1     3     3     9     9     5    10     4     6     9
 9     1     8     4     7     2     3     7     3    10
 8    10     3     9     4     8     4     1     3     1
 2     7     1     8    10     4     1    10     5    10
 6    10     8     9     3     9     7     9     3     1
 4     2     7     6     7     8     2     8     9     7
 6    10     8     7     7     6     1     9    10     8

我想做的只是抓取元素 (1,4);(2,5);and(3,6)

所以我试试

test([1,2,3],[4,5,6])

但这会返回两个指标的所有组合!

ans =

 6     3     1
 1     2     4
 8     4     8

如果没有这个中间步骤,我如何在一行中做我想做的事情?一定有办法的。

我不能使用中间步骤,因为实际上我的矩阵非常大,我的索引长度也很大,所以我会用完内存。

【问题讨论】:

    标签: arrays matlab matrix


    【解决方案1】:

    您可以使用sub2ind 来执行此操作,正如mathworks 中已经指出的那样:

    test(sub2ind(size(test),[1,2,3],[4,5,6]))
    

    应用于 3D

    test = randi(10,10,10,10);
    test(sub2ind(size(test),[1,2,3],[4,5,6], [3,3,3]))
    

    【讨论】:

    • 问题是我试图在 3D 数组中使用它,所以我不能说 test(index,3) 其中 index 代表前 2 个维度。你知道解决这个问题的方法吗?
    • 我提供了 3D 的答案,请更新您的问题以包含 3D 案例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多