2014-07-26 15 views
5

Sto cercando di riempire alcuni dati in due array, uno contenente angoli normalizzati e un altro contenente lo sin di quegli angoli. Gli array devono essere 2D perché saranno passati in una funzione che allena una rete neurale. Ho provato a dichiarare un array [1][360] e ho ricevuto degli errori, quindi ho anche provato lo [1][] poiché questo è ciò che mi dice intellisense, ma poi ho avuto un altro problema.con array 2D

Ecco il mio codice:

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 [][] 

Così Quali sono gli errori/incomprensioni hanno ho fatto?

+1

Ricorda sempre di pubblicare gli errori/le eccezioni effettive che stai ricevendo! –

risposta

6

si inizializza una matrice bidimensionale in questo modo:

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; 
} 

Oh, e dal modo in cui, il valore di PI è costruito in in C# con il maggior numero di decimali che si inserisce in un doppio, utilizzare

const double dtor = Math.PI/180.0; 
4

Si stanno utilizzando matrici frastagliate (ovvero array di matrici). Se sono necessari array multidimensionali, utilizzare la sintassi double[,] array = new double[10,10];.

0

OK, sembra che la funzione respinga array multidimensionali ma accetta matrici frastagliate. Per formare correttamente il mio array scalettato ho modificato il mio codice:

 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; 
     } 
+0

Perché hai persino una matrice multidimensionale se una delle dimensioni avrà una dimensione pari a 1? –

+0

È richiesto dal costruttore della classe 'BasicMLDataSet' da una libreria che sto usando. – James