【问题标题】:Matlab delete matrix row if first element is in array如果第一个元素在数组中,Matlab删除矩阵行
【发布时间】:2016-11-28 19:09:36
【问题描述】:

如果该行中的第一个元素包含在数组中,我正在尝试删除该行。

我有矩阵:

A = [ 1 2; 1 5; 2 3; 3 4; 3 5; 4 5 ];

和数组

B = [1,2,3]

在前。我正在将 A 克隆到 X

X = A

在选择之后我应该得到:

X = [4 5]

我尝试过这样做:

X(:, 1 == any(B)) = [];

【问题讨论】:

    标签: arrays matlab matrix


    【解决方案1】:

    您可以使用ismember 来检查A (A(:,1)) 的第一列中的值是否在B 中,然后使用生成的逻辑数组来选择A 中不存在的行在B 中并将它们分配给X

    X = A(~ismember(A(:,1), B),:);
    

    更新

    如果您想检查第一个或第二个元素是否在B 中,您可以执行以下操作

    X = A(~any(ismember(A:,1:2), B), 2), :);
    

    或者更简单的是,如果您只需要两列

    X = A(~any(ismember(A, B), 2), :);
    

    【讨论】:

    • 另外,是否可以检查第一个或第二个元素是否是成员?
    • @sphynx 你想要连续的第一个还是第二个或任何元素?
    • 好吧,一行中有两个元素,所以我需要知道是否有任何(第一个或第二个或两个)元素是数组的成员。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 2020-01-22
    • 2016-08-24
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    相关资源
    最近更新 更多