我的方法如下所示:
public static IEnumerable<Tuple<double, double>> LargestTriangleThreeBuckets(List<Tuple<double, double>> data, int threshold)
如何调用这样的方法?我目前有一系列双打。我没有使用元组的经验。感谢
更新:非常感谢大家。一点澄清:我在192kHz采样的正交信号上执行16k fft。产生的16384值需要针对显示器进行下采样,该显示器通常小于1920像素宽。为此,我成功实现了LargestTriangleThreeBucket下采样例程。这个例程可以在GitHub上找到
我从一个双精度数组开始,outputBuffer [16384],把它放在一个元组列表中,x值从1到16384,然后调用方法。
var myList = new List<Tuple<double, double>>();
for (int x = 0; x < fftOrder; x++)
{
myList.Add(new Tuple<double, double>(outputBuffer[x], x+1));
}
var result = LargestTriangleThreeBuckets(myList, 2048);
temporaryBuffer = result.Select(item => item.Item1).ToArray();
//output resulting buffer to the scope which is the user interface display of the signal
scope1.Channels[0].Data.SetYData(temporaryBuffer, 0, fftOrder/8);
fftOrder is = 16384.原样的代码在1毫秒内执行,足够快,足以实时显示。据我所知,结果是对其他下采样方法的重大改进。 非常感谢所有帮助过的人!
答案 0 :(得分:2)
怎么样
var result = LargestTriangleThreeBuckets(
new List<Tuple<double, double>>
{
Tuple.Create(0.0, 0.0),
Tuple.Create(2.0, 1.0),
Tuple.Create(0.0, 2.0)
},
42);
我认为,您正在寻找的方法是Tuple.Create
。
只是猜测,PointF
或来自System.Numerics.Vectors
的某些内容可能比三角形更好地代表Tuple<double, double>
。
答案 1 :(得分:0)
元组只是通用对象。但是你使用元组,想象一下你创建了一个具有适当类型的许多项的类。
例如,Tuple&lt; string,int,int&gt;将myObj.Item1作为字符串,将Items 2和3作为整数。您可以像这样使用它:
new Tuple<string, int, int>("Steve", 15, 22)
如果是列表:
var myList = new List<Tuple<double, double>>();
myList.Add(new Tuple<double, double>(25, 23.333));
var result = LargestTriangleThreeBuckets(myList, 50);