如何根据第二个矩阵(子)中的列值从父矩阵中提取行

Posted

技术标签:

【中文标题】如何根据第二个矩阵(子)中的列值从父矩阵中提取行【英文标题】:How to extract rows from a parent matrix based on column values from a second matrix (child) 【发布时间】:2018-03-21 08:35:48 【问题描述】:

我有 2 个矩阵:父矩阵 (19564 X 5) 和一个子矩阵 (3913 X 3)(父矩阵的子矩阵)。子矩阵中的 3 列和父矩阵中的第 3 列是 x、y 和 z - 坐标。

Parent= [x,y,z,A,B]
Child= [x,y,z]

我需要从父矩阵中提取第 4 列和第 5 列(A 和 B),对应于子矩阵中的 x、y、z 坐标。

我尝试在MATLAB 中使用ismember 函数,但它执行逐列搜索,但我没有得到所需的输出。

作为输出,我需要一个 3913 X 5 矩阵,其第一个 3 列与子矩阵完全相同,然后是父矩阵的 2 个附加列(A 和 B)。

【问题讨论】:

【参考方案1】:

您需要带有rows 标志的ismember 来匹配两个矩阵中的xyz 坐标,然后使用它的结果从Parent 矩阵中提取所需的行。

out = Parent(ismember(Parent(:,1:3), Child, 'rows'), :);

【讨论】:

我认为您需要将 [4 5] 更改为 :,因为需要 3913x5 矩阵。 我知道它代表列。对于[4 5]out 将是一个 3913x2 矩阵,而 OP 要求 3913x5 矩阵。除非您要将out 附加到Child。 (但目前代码中没有发生这种情况) @ViG 你是对的。 OP 首先询问提取第 4 列和第 5 列,然后询问获取所有列。我错过了。感谢您指出。

以上是关于如何根据第二个矩阵(子)中的列值从父矩阵中提取行的主要内容,如果未能解决你的问题,请参考以下文章

根据 SQL Server 中表中的列值从两个表中获取一个新表:

矩阵与点乘与叉乘在Unity中的区别

MySQL,根据列值从不同的行中选择

matlab如何提取矩阵中的每一列作为新的变量

MATLAB如何提取某一矩阵中某一列的部分数据?

python如何挑选矩阵中的不相领的列组成新的矩阵