我有2Arrays
个双打,需要在上面执行算术运算(+,-,/,*)
Array1 = d1 , d2, d3, d4, d5, d6, , , d9, d10
Array2 = d3, d4, , d6, , d8, d9, d10
Operation = "+";
修改 上方显示的空白元素仅用于表示数据 它们都没有空白存储
Array1 = d1, d2, d3, d4, d5, d6, d9, d10
Array2 = d3, d4, d6, d8, d9, d10
要求输出
ArrayOpt =
[0] = d3+d3
[1] = d4+d4;
[2] = d5+d4;
[3] = d6+d6;
[4] = d6+d8;
[5] = d9+d9;
[6] = d10+d10;
我尝试过的事情
int i = 0, PreviousIndex = -1;
int SecondaryIndex = 0;
// check if there is a gap
if (SecondaryIndex < DATES2.Length && Convert.ToInt32(d) != Convert.ToInt32(DATES2[SecondaryIndex]))
{
// first value of index contain the index of second symbol date that matches with first symbol's first date.
// eg: first data => d1 d2 d3 d4 d5 d6
// 2nd data => d3 d4 d6
// in the above case, the index would be the index of d3.
index = DATES2.Select((v, j) => new { Index = j, Value = (int)v }).Where(p => p.Value == (int)d).Select(p => p.Index).ToList();
if (index.Count > 0)
SecondaryIndex = index[0];
else
SecondaryIndex = -1;
}
if(secondaryIndex != -1)
{
CalculateData(operation, DATES1[i],DATES2[secondaryIndex]);
PreviousIndex = secondaryIndex;
}
else
{
CalculateData(operation, DATES1[i],DATES2[PreviousIndex]);
}
i++;
secondaryIndex++;
但是输出是这个
d1, d2, d3, d4, d5, d6, d9, d10
+
d3, d4, d6, d8, d9, d10
有人可以建议出什么问题或其他更好的解决方案吗?
答案 0 :(得分:1)
您可以使用Math.Net库执行基本的线性代数运算以及您可能要使用的所有矩阵运算。正如您在链接中看到的所示的基本线性代数运算示例(+,*,-,/)。
此外,由于矩阵是单维的,因此可以使用单个for循环将Array1和Array2索引求和,如下所示。
var a1 = new int[5] {1,2,3,4,5};
var a2 = new int[7] {1,2,3,4,5,6,7};
var maxLength = a1.Length > a2.Length ? a1.Length : a2.Length;
var outputArray = new int[maxLength];
for(var i = 0; i < maxLength; i++)
{
if(a1.Length < i + 1)
{
outputArray[i] = a2[i];
continue;
}
if(a2.Length < i + 1)
{
outputArray[i] = a1[i];
continue;
}
outputArray[i] = a1[i] + a2[i];
}
Console.Write(outputArray.GetValue(6));