C# 中的查找、差异函数

Find, diff function in c#

我在 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) returns 是一个与 S 大小相同的向量,如果 S 大于 0.5 则包含逻辑值 1,反之则为 0。该向量的差异return 0 如果向量的前一个值相同 1 如果前一个值是 0 和当前的 1 和 -1 在对比中。因此,在这种情况下,找到“==1”returns 信号在升序时大于阈值的所有点。我将信号的实时值存储在列表部分中:

parts.Add(this.confidence);

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

I want to search in a signal when it takes bigger values than 1 in ascending order

让我们假设您的信号是 double 并且您有一些信号集合:

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

然后您可以创建这些信号的一个子集,其中值 > 1 按升序排列:

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

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