【发布时间】:2015-07-13 09:04:28
【问题描述】:
我在 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,则返回 0,而当前值为 1,则为 -1。因此 find 在这种情况下,“==1”按升序返回信号大于阈值的所有点。我将信号的值实时存储在列表部分中:
parts.Add(this.confidence);
我想在此列表中找到信号通过 0.25 阈值的位置。任何的想法?
【问题讨论】:
-
您自己尝试过什么吗?使用
for循环试一试,如果遇到问题,请返回代码 -
我很难找到差异化的东西。
-
也许这就是您要找的东西? msdn.microsoft.com/en-us/library/vstudio/…
-
@JoseRamon 不要尝试为
diff寻找东西,它在概念上非常简单。只需自己在循环中实现它。请记住,C# 不是 Matlab,循环是 C# 中惯用且正确的方式。目前,您的代码要求某人推荐一个与本论坛无关的工具或库。证明您尝试过自己编写代码,并就实际代码的问题提出问题。 -
线路有什么作用?很可能存在等效的 LINQ,但您需要先向我们 C# 人员解释您的代码。