我在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#中转换此行?
我的信号如下:
我希望在信号开始取值大于和低于图中标记的某些阈值时发现实时。为了做到这一点,我使用diff函数来找到这些点。首先(S> 0.5)返回与S相同大小的向量,如果S大于0.5或者相反,则包含逻辑值1。如果向量的先前值相同,则该向量的差值返回0(如果前一个值为0,则为1),对比度中的当前值为1和-1。因此,在该情况下找到“== 1”以升序返回信号大于阈值的所有点。我将信号的实时值存储在列表部分中:
parts.Add(this.confidence);
我想找到此列表中信号通过0.25阈值的位置。任何的想法?
答案 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;
这可能不是您所需要的,但会让您走上正确的道路。