根据单元格值删除矩阵中的特定行 - 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,:);
我进行了搜索,但只能找到已知行号的答案。
我有一个 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,:);