如何使用元组调用方法?

时间:2014-11-18 16:23:01

标签: c# methods ienumerable

我的方法如下所示:

public static IEnumerable<Tuple<double, double>> LargestTriangleThreeBuckets(List<Tuple<double, double>> data, int threshold)

如何调用这样的方法?我目前有一系列双打。我没有使用元组的经验。感谢

更新:非常感谢大家。一点澄清:我在19​​2kHz采样的正交信号上执行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毫秒内执行,足够快,足以实时显示。据我所知,结果是对其他下采样方法的重大改进。 非常感谢所有帮助过的人!

2 个答案:

答案 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);