【问题标题】:Removing some indexes of a matrix in MATLAB在 MATLAB 中删除矩阵的一些索引
【发布时间】:2014-10-19 06:36:32
【问题描述】:

我有一个二维矩阵,A,每一行代表一个信号样本,

我想通过删除 mean 大于和小于阈值的样本来过滤它。

所以我计算像m = mean(A');这样的平均值

然后我想做类似的事情

A(m > 2 || m < 1 , :) = [];

哪个面临错误,

我试过这样做,

A(m > 2 , :) = [];
A(m < 1 , :) = [];

但我意识到在执行第一行之后,索引发生了变化......

那我该怎么办?

【问题讨论】:

  • 您应该看看this question,了解||| 之间的区别。 (tl;dr: | 可以对数组进行操作,但 || 只能对标量进行操作)。附带说明:为了防止A(m &gt; 2 , :) = []; 之后的索引更改,您可以再次运行m = mean(A'); 以重新计算索引。
  • @Dev-iL,关于再次使用mean 的好处。

标签: matlab matrix


【解决方案1】:

cmets 建议您使用元素方式或代替标量。

这个:

A(m > 2 | m < 1 , :) = [];

不是这个:

A(m > 2 || m < 1 , :) = [];

但是,与您的其他问题一样,我强烈建议使用维度参数来表示,而不是将输入矩阵转置为表示:

m = mean(A,2).'; % NOT m = mean(A');

【讨论】:

    【解决方案2】:

    我这样做了:

     A(m > 2,:) = NaN;
     A(m < 1,:) = NaN;
     A(any(isnan(A),2),:) = [];
    

    我不知道它是否足够高效,但它确实完成了工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      相关资源
      最近更新 更多