这是一个Matlab问题。
我有一系列数字。其中一些对应于实际信号,其他对应于噪声。我知道
如何对数组进行排序以便
例如
input = [-0.0002, -0.00058, -0.28, -0.0008, -0.25,-0.0006,-0.00004,-0.26]
output = [-0.28, -0.25, -0.26, -0.0002, -0.00058,-0.0008, -0.0006,-0.00004]
答案 0 :(得分:0)
生成一个逻辑数组ind
,指示本地最小值的位置:
d = diff(y);
ind = [1, d(1 : end) < 0] & [d(1 : end) > 0, 1];
通过首先提取局部最小值,然后是其他值(ind
的逻辑否定)来构造输出,并将它们放在一个数组中:
output = [y(ind), y(~ind)]
答案 1 :(得分:0)
它在逻辑上非常简单。如何说明你的所有数据必须低于某个阈值。
试试这个:
input = [-0.0002, -0.00058, -0.28, -0.0008, -0.25,-0.0006,-0.00004,-0.26]
output = [-0.28, -0.25, -0.26, -0.0002, -0.00058,-0.0008, -0.0006,-0.00004]
is_data=input<-0.001;
res = [input(is_data) input(~is_data)]
res - output % = 0!