如何根据第二个矩阵(子)中的列值从父矩阵中提取行
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 列,然后询问获取所有列。我错过了。感谢您指出。以上是关于如何根据第二个矩阵(子)中的列值从父矩阵中提取行的主要内容,如果未能解决你的问题,请参考以下文章