У меня проблема с преобразованием кода C ++ в c#. Я не знаю, как преобразовать double
в double*
c ++ код
void Kohonen::Initialize()
{
int i ;
double *optr ;
ClearWeights();
RandomizeWeights();
for (i=0 ; i<NUMBER_OUTPUT; i++)
{
optr = outputWeights[i];
NormalizeWeight(optr);
}
}
c#
unsafe void Initialize()
{
int i;
double* optr;
ClearWeights();
RandomizeWeights();
for (i = 0; i < NUMBER_OUTPUT; i++)
{
optr = outputWeights[i,0];
NormalizeWeight(optr);
}
}
И для справочного метода NormalizeWeight
unsafe void NormalizeWeight(double* w)
edit1 добавление дополнительного кода C ++
void Kohonen::NormalizeWeight(double *w)
{
int i ;
double len ;
len = VectorLength(NUMBER_INPUT, w );
if (len < 1.e-30)
len = 1.e-30 ;
len = 1.0 / sqrt(len);
for (i=0; i<NUMBER_INPUT; i++)
w[i] *= len;
}
double Kohonen::VectorLength (int n, double *vec )
{
double sum = 0.0;
for (int i=0;i<n;i++ )
sum += vec[i] * vec[i];
return sum;
}
и массив, используемый в этих методах
double outputWeights[NUMBER_OUTPUT][NUMBER_INPUT];