在c#中查找,diff函数

时间:2015-07-13 09:04:28

标签: c# matlab find diff

我在Matlab脚本中有一堆代码,我想用c#转换它。更具体地说,我的基本问题如下:

X= find(diff(S>0.5) ==1); //greater than the threshold
Y= find(diff(S<0.5)==1);  // lower than the threshold

事实上,我想在实时信号中搜索大于0.5的值(按递增顺序)。如何在c#中转换此行?

我的信号如下:

enter image description here

我希望在信号开始取值大于和低于图中标记的某些阈值时发现实时。为了做到这一点,我使用diff函数来找到这些点。首先(S> 0.5)返回与S相同大小的向量,如果S大于0.5或者相反,则包含逻辑值1。如果向量的先前值相同,则该向量的差值返回0(如果前一个值为0,则为1),对比度中的当前值为1和-1。因此,在该情况下找到“== 1”以升序返回信号大于阈值的所有点。我将信号的实时值存储在列表部分中:

parts.Add(this.confidence);

我想找到此列表中信号通过0.25阈值的位置。任何的想法?

1 个答案:

答案 0 :(得分:2)

  

我希望在信号中按升序输入大于1的值时搜索

让我们假设您的信号为double,并且您收集了一些信息:

var signals = new List<double> { ... };

然后您可以创建这些信号的子集,其值为&gt; 1按升序排列:

var filteredOrderedSignals = from signal in signals 
                             where signal > 1.0 orderby signal ascending 
                             select signal;

这可能不是您所需要的,但会让您走上正确的道路。