创建3d数组或3d矩阵

时间:2017-10-03 12:55:46

标签: c# matrix multidimensional-array

我尝试创建一个带有2个for循环的3d数组。但如果我检查我的Z组件,我的控制台将给我2个值。

为什么呢?我能改变什么? 通常我会使用List<Tuple<,,>>,但我想创建一个3D矩阵,所以我认为float [,,]更好转换。 你知道怎么做吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media.Media3D;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            float[,,] A = new float[40, 48,40*48];
            List<Tuple<int,int,float>> P = new List<Tuple<int, int, float>>();
            var Zvalue = new float[40*48];
            int i = 0;
            Random R = new Random();
            for(int y = 0; y <= 47; y++)
            {
                for (int x = 0; x <= 39; x++)
                {
                    Zvalue[i] = R.Next(0, 10);
                    //P[x, y, i] = { { { (x,y,Z[x,y]) } } };
                    P.Add(Tuple.Create(x, y, Zvalue[i]));
                    A[x,y,i] =  Zvalue[i];
                    Console.WriteLine(A[x,y,i]);
                    Console.Read();
                    i++;
                }
            }
        }
    }
}

控制台输出:

enter image description here

评论之后,我理解如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media.Media3D;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            float[,,] A = new float[40, 48, 120];
            List<Tuple<int, int, float>> P = new List<Tuple<int, int, float>>();
            var Zvalue = new float[40 * 48 * 120];
            int i = 0;
            Random R = new Random();
            for (int y = 0; y <= 47; y++)
            {
                for (int x = 0; x <= 39; x++)
                {
                    for (int z = 0; z < 120; z++)
                    {
                        Zvalue[i] = R.Next(0, 10);
                        //P[x, y, i] = { { { (x,y,Z[x,y]) } } };
                        P.Add(Tuple.Create(x, y, Zvalue[i]));
                        A[x, y, z] = Zvalue[i];
                        Console.WriteLine(A[x, y, z]);
                        Console.Read();
                        i++;
                    }
                }
            }
        }
    }
}

假设对于每个x,y位置,将有120个可能的Z位置。这是对的吗 ?我也可以使用这个float[,,] A进行矩阵计算吗? 但是我不明白为什么Console.Read()会得到2个字符?

好的,这是不正确的,因为0,0,0的随机值直到0,0,119,但就是这样。例如,对于0,1,0,该值为0.如何修复它?

0 个答案:

没有答案