基于单元格值删除矩阵中的特定行 - Matlab

时间:2015-01-06 17:23:26

标签: arrays matlab matrix rows

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

我有一个N乘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

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

1 个答案:

答案 0 :(得分:0)

根据第二列删除行:

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

或等效

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

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

C = B(~ind,:);