如何对信号数据进行排序,降低噪音?

时间:2013-11-25 14:49:36

标签: matlab

这是一个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]

2 个答案:

答案 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!