2014-10-19 23 views
1

我有一个2D矩阵,A,每一行代表信号的一个样本,卸下基质的某些指标的MATLAB

我想通过除去具有所述样本以过滤它意味着大于阈多和少。

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

然后我要像做

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

与错误面孔,

我试图做类似,

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

但是我意识到在执行第一行之后,索引会改变d ...

那我该怎么办?

+1

你应该看看[这个问题](http://stackoverflow.com/questions/14183385/whats-the-differenc e-between-in-matlab)关于'|'和'||'_之间的区别。 (tl; dr:|可以对数组进行操作,但||只能对标量操作)。 附注:为了对抗'A(m> 2,:) = [];'之后的索引改变,您可以再次运行m = mean(A');'来重新计算索引。 – 2014-10-19 11:38:02

+0

@ Dev-iL,关于再次使用“mean”的好处。 – Rashid 2014-10-19 15:04:08

回答

1

该评论建议您使用元素明智或代替标量。

此:

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

不是这个:

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

但是,与您的其他问题,我强烈建议使用尺寸参数的意思,而不是调换输入矩阵是指:

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

我这样做:

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

我不知道这是否是足够的效率,但它做的工作。