【问题标题】:MatLab: Create matrix row element if row elements of two previous matrices are identicalMatLab:如果两个先前矩阵的行元素相同,则创建矩阵行元素
【发布时间】:2015-01-24 17:49:59
【问题描述】:

抱歉标题。我想不出更好的办法。

我有以下问题。

我有两个这样的四列矩阵:

房产 | X |是 | Z

这两个矩阵的大小不同,因为与矩阵 2 相比,矩阵 1 有大量额外的行。

我想做的是:

我需要创建第三个矩阵,该矩阵仅包含 X、Y 和 Z 列中与 matrix2 中的行相同的那些行(大矩阵的)(属性列总是不同的)。

我尝试了一个 if 语句,但由于我的编程语法,它并没有真正奏效。有人给点小费吗?

谢谢!

我尝试过这样的事情:(在这种情况下,A 是更大的矩阵,我希望它的 X、Y、Z 位置的属性列与另一个矩阵 B 相同。我对 MatLab 语法很糟糕。 .

if (A(:,2) == B(:,2) and (A(:,3) == B(:,3) and  (A(:,4) == B(:,4)) 

newArray(:,1) = A(:,1); 

结束

【问题讨论】:

  • 我担心代码示例中描述的方式可能会取消,因为 A 和 B 的大小不同,无法真正比​​较。

标签: matlab if-statement matrix intersection


【解决方案1】:

使用 ismember'rows' 选项来查找所需的行,然后将其用作索引来构建结果:

ind = ismember(A(:,2:4), B(:,2:4), 'rows');
C = A(ind,:);

我假设如果A 的最后三列与B任何 行匹配,则选择该行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    相关资源
    最近更新 更多