如何在c#中创建新的数组,从两个双精度数组中减去值
本文关键字:数组 两个 双精度 创建 | 更新日期: 2023-09-27 18:08:19
这是我的问题,我有两个数组都有双值
(这是一个函数,从richTextBox返回值(纬度))
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);
我应该怎么做,得到这样的东西:
例如:var data3 = data1 - data2;
我在这个数据中的值看起来像(f)。Data1 = (x11, x12,…)x1 (n)):
53.11818160073043,
53.11816348903661,
53.11814874695463,
...
data2 = (x21, x22,…)x (2 n)):
53.11814200771546,
53.118131477652156,
53.11812263239697,
53.11811884157276,
53.11811631435644,
....
我想要回data3 = (x31=x11-x21, x32=x12=x22,…(3 n) = x (1 n) - x (2 n))
如果包含以下条件就好了:如果Data1 = (1,5,6,8)Data2 = (1.5, 3.3)
data3 =(-0.5, 1.7)不是data3 = (-0.5, 1.7, 6, 8)
请帮。
假设这两个数组长度相同,且类型为double[]
,那么LINQ可以轻松地使用Enumerable.Zip
:
using System.Linq;
// …
var result = data1.Zip(data2, (d1, d2) => d1 - d2).ToArray();
传递的lambda函数应用于两个数组中每一对连续的元素。
这是我代码的下一部分。我用它来绘制一个图表,显示接收器GPS和接收器GNSS之间的纬度差异。也许它会对某人有所帮助。感谢对"var result = data1.Zip…"的帮助。:)
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);
}