2D数组的问题

本文关键字:问题 数组 2D | 更新日期: 2023-09-27 18:14:52

我试图将一些数据填充到两个数组中,一个包含规范化角度,另一个包含这些角度的sin。数组必须是二维的,因为它们将被传递到一个训练神经网络的函数中。我尝试声明一个[1][360]数组并得到错误,所以我也尝试了[1][],因为这就是智能感知告诉我的,但后来我又遇到了另一个问题。

下面是我的代码:
double[][] sin_in = new double[1][];
double[][] sin_out = new double[1][];
double deg = 0.0;
const double dtor = 3.141592654 / 180.0;
for (int i = 0; i < 360; i++)
{
    sin_out[0][i] =  Math.Sin(deg * dtor); // complains I need to use new
    sin_in[0][i] = deg / 360.0; //When I use new I get another error
    deg += 1.0;
}
IMLDataSet trainingSet 
    = new BasicMLDataSet(sin_in, sin_out); //Inputs must be [][]

那么我犯了什么错误/误解呢?

2D数组的问题

像这样初始化一个二维数组:

double[,] sin_in = new double[1, 360];
double[,] sin_out = new double[1, 360];
double deg = 0.0;
const double dtor = 3.141592654 / 180.0;
for (int i = 0; i < 360; i++)
{
    sin_out[0,i] =  Math.Sin(deg * dtor); // complains I need to use new
    sin_in[0,i] = deg / 360.0; //When I use new I get another error
    deg += 1.0;
}
哦,顺便说一下,PI的值在c#中内置了尽可能多的小数,可以放入双精度数中,使用
const double dtor = Math.PI / 180.0;

你正在使用锯齿数组(也就是。数组的数组)。如果需要多维数组,请使用double[,] array = new double[10,10];语法。

好的,看起来函数拒绝多维数组,但接受锯齿数组。为了正确地形成锯齿数组,我将代码更改为:

        double[][] sin_in = new double[360][];
        double[][] sin_out = new double[360][];
        double deg = 0.0;
        const double dtor = Math.PI / 180.0;
        for (int i = 0; i < 360; i++)
        {
            sin_out[i] =  new [] {Math.Sin(deg * dtor)};
            sin_in[i] =  new[] {deg / 360.0};
            deg += 1.0;
        }