我给了这个搜索,但只能找到行号已知的答案。
我有一个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
我不能使用行号,因为矩阵有数百万行
答案 0 :(得分:0)
根据第二列删除行:
B(ismember(B(:,2),days),:) = [];
或等效
B = B(~ismember(B(:,2),days),:);
或者,在您的代码中,将第三行和第四行更改为
C = B(~ind,:);