Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建从C#中的两个双数组中减去值的新数组?_C#_Arrays_Subtraction - Fatal编程技术网

如何创建从C#中的两个双数组中减去值的新数组?

如何创建从C#中的两个双数组中减去值的新数组?,c#,arrays,subtraction,C#,Arrays,Subtraction,Helou这是我的问题,我有两个数组,它们有两个值: (这是从richTextBox返回值(纬度)的函数) 我该怎么做才能得到这样的东西: 例如:var data3=data1-data2 我在此数据中的值看起来像(f.e.) 数据1=(x11,x12,…x1(n)): 数据2=(x21,x22,…x(2n)): 我想返回数据3=(x31=x11-x21,x32=x12=x22,…x(3n)=x(1n)-x(2n)) 如果它包括以下条件,那就好了: 如果 数据1=(1,5,6,8) 数据2=(1

Helou这是我的问题,我有两个数组,它们有两个值:

(这是从richTextBox返回值(纬度)的函数)

我该怎么做才能得到这样的东西:

例如:var data3=data1-data2

我在此数据中的值看起来像(f.e.) 数据1=(x11,x12,…x1(n)):

数据2=(x21,x22,…x(2n)):

我想返回数据3=(x31=x11-x21,x32=x12=x22,…x(3n)=x(1n)-x(2n))

如果它包括以下条件,那就好了: 如果 数据1=(1,5,6,8) 数据2=(1.5,3.3)

数据3=(-0.5,1.7)而不是数据3=(-0.5,1.7,6,8)


请提供帮助。

假设两个数组的长度相同且类型均为
double[]
,则LINQ可轻松实现以下功能:


传递的lambda函数应用于两个数组中的每个连续元素对。

这是我代码的下一部分。我用它来绘制一张图表,显示接收机GPS和接收机GNSS之间的纬度差异。也许这对某人会有帮助。感谢您对“var result=data1.Zip…”的帮助:)


谢谢,但我有一个错误:“错误1运算符“-”不能应用于“System.Tuple”和“System.Tuple”类型的操作数@TomekeM:注意这个答案的第一段,然后在你的问题中,你强烈暗示这是事实(尽管这与代码示例不完全匹配:即,你的Q不一致)。但只需调整lambda的表达式即可提取正确的成员:例如,
(d1,d2)=>d1.Item1-d2.Item2)
  private Tuple<double>[] szerokosc(string[] lines)
    {
        return Array.ConvertAll(lines, line =>
        {   
            string[] elems = line.Split(',');
            double we = 0.01 * double.Parse(elems[3], EnglishCulture);
            int stopnie = (int)we;
            double minuty = ((we - stopnie) * 100) / 60;
            double szerokosc_dziesietna = stopnie + minuty;
            return new Tuple<double>(Math.Round(szerokosc_dziesietna, (int)numericUpDown2.Value));
        });
        ;
    }
var data1 = szerokosc(szerdlugeo_diag_gps.Lines);
var data2 = szerokosc(szerdlugeo_diag_gpsglonass.Lines);
53.11818160073043,
53.11816348903661,
53.11814874695463,
...
53.11814200771546,
53.118131477652156,
53.11812263239697,
53.11811884157276,
53.11811631435644,
....
using System.Linq;
// …

var result = data1.Zip(data2, (d1, d2) => d1 - d2).ToArray();
 private void button1_Click(object sender, EventArgs e)
    {
        var data1 = szerokosc(szerdlugeo_diag_gps.Lines);
        var data2 = szerokosc(szerdlugeo_diag_gpsglonass.Lines);

        var data_finish = data1.Zip(data2, (d1, d2) => d2.Item1 - d1.Item1).ToArray();

        var minimalna1 = data_finish.Min();
        var maksymalna1 = data_finish.Max();

        chart9.ChartAreas[0].AxisY.Minimum = minimalna1;
        chart9.ChartAreas[0].AxisY.Maximum = maksymalna1;

        Series series333 = new Series("DGPS") { ChartType = SeriesChartType.Line, BorderWidth = 1, MarkerSize = 3, MarkerStyle = MarkerStyle.Square, Color = Color.Blue };
        foreach (var p in data_finish)
            series333.Points.Add(p);
        chart9.Series.Add(series333);
    }