问题描述
如何从多维数组中取出一些值,然后计算平均选择值?
How do I sort out some values from multidimensional Array and then calculate the average selected value?
所以当我点击某个图像时,它不仅应该在鼠标指针所在的点显示深度数据(来自 Microsoft Kinect),而且还应该计算环境中的值(即多维数组).
So when I click some Image, it should show depth data (from Microsoft Kinect) not only in the point where the mouse pointer stands, but also it should calculate the value in the environment (which is multidimensional Array).
这是我的代码:
protected void imageIR_MouseClick(object sender, System.Windows.Input.MouseEventArgs e)
{
// Get the x and y coordinates of the mouse pointer.
System.Windows.Point mousePoint = e.GetPosition(imageIR);
double xpos_IR = mousePoint.X;
double ypos_IR = mousePoint.Y;
int x = (int)xpos_IR;
int y = (int)ypos_IR;
lbCoord.Content = "x- & y- Koordinate [pixel]: " + x + " ; " + y;
int d = (ushort)pixelData[x + y * this.depthFrame.Width];
d = d >> 3;
int xpos_Content = (int)((x - 320) * 0.03501 / 2 * d/10);
int ypos_Content = (int)((240 - y) * 0.03501 / 2 * d/10);
xpos.Content = "x- Koordinate [mm]: " + xpos_Content;
ypos.Content = "y- Koordinate [mm]: " + ypos_Content;
zpos.Content = "z- Koordinate [mm]: " + (d);
// Allocating array size
int i = 10;
int[] x_array = new int[i];
int[] y_array = new int[i];
int[,] d_array = new int[i,i];
for (int m = 0; m < 10; m++)
{
for (int n = 0; n < 10; n++)
{
x_array[m] = x + m;
y_array[n] = y + n;
d_array[m, n] = (ushort)pixelData[x_array[m] + y_array[n] * this.depthFrame.Width];
d_array[m, n] = d_array[m, n] >> 3;
}
}
}
那么,首先:如何对 d_array[m,n] 中的所有值求和?是否可以计算每一行的总和(->一维数组/向量),然后再次计算列的总和(->零维数组/标量)?
So, firstly: how do I sum all the values from d_array[m,n] ? Is it possible to calculate the sum of each row (-> one dimensional Array / vector) and then calculate again the sum of the column (-> zero-dimensional Array / scalar)?
推荐答案
所以,首先:如何对 d_array[m,n] 中的所有值求和
So, firstly: how do I sum all the values from d_array[m,n]
你可以使用:
int sum = d_array.Cast<int>().Sum();
这将自动展平多维数组并取所有元素的总和.
This will automatically flatten out the multidimensional array and take the sum of all elements.
是否可以先计算每一行的总和(->一维数组/向量),然后再计算列的总和(->零维数组/标量)?
Is it possible to calculate the sum of each row (-> one dimensional Array / vector) and then calculate again the sum of the column (-> zero-dimensional Array / scalar)?
是的,但这需要手动循环.没有一个简单的方法可以解决这个问题,尽管编写方法来处理它很容易,即:
Yes, but this would require looping manually. There is no simple one liner for this, though it would be easy to write methods to handle it, ie:
IEnumerable<T> GetRow(T[,] array, int row)
{
for (int i = 0; i <= array.GetUpperBound(1); ++i)
yield return array[row, i];
}
IEnumerable<T> GetColumn(T[,] array, int column)
{
for (int i = 0; i <= array.GetUpperBound(0); ++i)
yield return array[i, column];
}
你可以这样做:
var row1Sum = GetRow(d_array, 1).Sum();
这篇关于Sum 多维数组 C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!