2014-07-26 14 views
5

Tôi đang cố gắng điền một số dữ liệu vào hai mảng, một chứa các góc chuẩn hóa và một có chứa các số sin của các góc đó. Các mảng phải là 2D bởi vì chúng sẽ được truyền vào một hàm để huấn luyện một mạng nơron. Tôi đã cố gắng tuyên bố một mảng [1][360] và có lỗi, vì vậy tôi cũng đã thử [1][] vì đó là những gì intellisense nói với tôi, nhưng sau đó tôi đã nhận được một vấn đề khác.vấn đề với các mảng 2D

Đây là mã của tôi:

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

Vì vậy, những gì sai lầm/hiểu lầm tôi đã thực hiện?

+1

Luôn nhớ đăng các lỗi/ngoại lệ thực tế bạn đang nhận được! –

Trả lời

6

Bạn khởi tạo một mảng hai chiều như thế này:

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, và bằng cách này, giá trị của PI được xây dựng ở trong C# với càng nhiều số thập phân phù hợp trong một đôi, sử dụng

const double dtor = Math.PI/180.0; 
4

Bạn đang sử dụng mảng răng cưa (còn gọi là mảng mảng). Nếu bạn cần mảng đa chiều, hãy sử dụng cú pháp double[,] array = new double[10,10];.

0

OK, có vẻ như chức năng từ chối mảng đa chiều nhưng chấp nhận các mảng bị lởm chởm. Để hình thành mảng lởm chởm của tôi một cách chính xác, tôi đã thay đổi mã của mình thành:

 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

Tại sao bạn thậm chí có một mảng đa chiều nếu một trong các kích thước chỉ có kích thước 1? –

+0

Nó được yêu cầu bởi hàm tạo của lớp 'BasicMLDataSet' từ thư viện tôi đang sử dụng. – James

Các vấn đề liên quan