【问题标题】:Get all the indices of each unique row获取每个唯一行的所有索引
【发布时间】:2016-11-21 22:24:28
【问题描述】:

我有一个包含 x、y、z 坐标和密度的 4 列二维矩阵。所有 XYZ 都被强制为最近的 500m 值。我想收集所有唯一 XYZ 组合的所有行索引。

所以,我想对于一个 m x 4 的密度矩阵,我应该建立一个 m x n 矩阵,每行包含 1 和 0,以表示它们与密度行的关系。然后,我可以隔离函数的唯一 XYZ 的所有值(即:平均值或中值)。

我使用了 unique(dd(:,1:3, 'rows') 来获取唯一的 XYZ。我可以使用 ismember() 来查找唯一的 XYZ 行。我将如何为所有行运行它唯一的 XYZ 来生成那个 mxn 矩阵,没有 for 循环?

【问题讨论】:

  • 这是什么意思?“我应该建立一个 m x n 矩阵,每行包含 1 和 0 以表示它们与密度行的关系”。如果您可以提供一个您实际正在寻找的示例,那么人们会更容易为您提供帮助!
  • KiW - 因为 ismember() 返回一个逻辑向量,指示哪一行具有查询值,我想我需要通过为每个查询值添加一个向量作为一行来构造一个矩阵。然后我可以将该矩阵乘以密度列,以获得总和的列向量。有点看起来丹对我进行了分类。感谢您的提问。

标签: matlab for-loop find unique


【解决方案1】:

您想要unique 函数的第三个输出,然后您可以将其提供给accumarray

[~,~,subs] = unique(dd(:,1:3), 'rows')

然后求中位数

accumarray(subs, dd(:,4), [], @median)

【讨论】:

  • 谢谢。它起作用了(当我更改 dd(:,4) 和 subs 的顺序时)。我对“潜艇”中的重复数字感到困惑,但它确实有效。谢谢。
  • @user24007 将subs 视为 的数组,accumarray 将把第四个参数(即@median)中的函数应用于相应的元素每个组在第二个参数dd(:,4)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-02
  • 2014-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多