【问题标题】:Deleting specific rows within a matrix based on cell values - Matlab根据单元格值删除矩阵中的特定行 - Matlab
【发布时间】:2015-01-06 17:23:25
【问题描述】:

我对此进行了搜索,但只能在行号已知时找到答案。

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

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

【问题讨论】:

  • 发布一个带有输入和所需输出的小例子
  • 你的标准是什么?
  • 删除第二列中的值等于“天”数组中列出的值的行。
  • 您提到在第二列然后在第一列进行过滤。您的代码示例不会沿第一列过滤。另外,如果这个矩阵已经适合内存,为什么不能使用行号?
  • 我不知道数据的所有行号。提供的代码只是一个示例,我没有包含用于过滤第一列的代码,因为它需要与第二列几乎相同的功能。

标签: arrays matlab matrix rows


【解决方案1】:

根据第二列删除行:

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

或等效

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

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

C = B(~ind,:);

【讨论】:

  • 啊,太棒了!我知道我快到了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
  • 2021-08-23
  • 1970-01-01
  • 1970-01-01
  • 2016-02-08
相关资源
最近更新 更多