根据单元格值删除矩阵中的特定行 - Matlab

Deleting specific rows within a matrix based on cell values - Matlab

我进行了搜索,但只能找到已知行号的答案。

我有一个 N x 4 矩阵,我试图根据第二列中的特定值删除行,然后是第一列。

最初我以错误的方式处理这个问题,根据我不想要的值过滤矩阵,然后将其从初始矩阵中移除,这显然不是我想要的结果。 (见下文)

days = [669 680 298 299];
ind = ismember(B(:,2),days);
D = B(ind,:);
C=[B;-D];

我假设有一种非常相似的方法来删除行,而不是过滤它们? 如果您能以任何方式帮助我,我们将不胜感激!

编辑:

输入:

 1002 101 04 92
 1002 12 12 298
 1002 298 12 589
 1002 680 12 589

输出:

 1002 101 04 92
 1002 12 12 298

我不能使用行号,因为矩阵有数百万行

根据第二列删除行:

B(ismember(B(:,2),days),:) =  [];

或等效

B = B(~ismember(B(:,2),days),:);

或者,在您的代码中,将第三行和第四行更改为

C = B(~ind,:);