先看一下代码:
class Matrix_PolyFit
{
public bool matrix_PolyFit(double[] x, double[] y, int X_Y_Number, int Fit_N, ref double[] ks)
{
// 对X_Y_Number组数据x,y进行Fit_N次多项式拟合,拟合返回多项式的系数ks
// x[X_Y_Number],y[X_Y_Number],ks[Fit_N+1]
//
if (Fit_N > X_Y_Number || X_Y_Number < 1)
{
return false;
}
int i, j, index, n;
double temp;
Fit_N++;
double[] x2 = new double[Fit_N*Fit_N];
double[] y2 = new double[Fit_N];
for (i = 0, index = 0; i < Fit_N; i++)
{
y2[i] = 0;
for (j = 0; j < Fit_N; j++)
{
x2[index + j] = 0;
}
index += Fit_N;
}
x2[0] = X_Y_Number;
for (i = 0; i < Fit_N; i++)
{
for (j = 0; j < Fit_N; j++)
{
temp = 0;
n = i + j;
for (index = 0; index < X_Y_Number; index++)
{
temp += Math.Pow(x[index], n);
}
index = j;
for (n = i; n < Fit_N; n++)
{
if (index >= 0)
{
x2[n * Fit_N + index] = temp;
}
index--;
}
}
}
n = Fit_N + Fit_N - 2;
temp = 0;
for (i = 0; i < X_Y_Number; i++)
{
temp += Math.Pow(x[i], n);
}
x2[Fit_N * Fit_N - 1] = temp;
for (i = 0; i < Fit_N; i++)
{
temp = 0;
for (j = 0; j < X_Y_Number; j++)
{
temp += y[j] * Math.Pow(x[j], i);
}
y2[i] = temp;
}
return true;
}
}
这是c#的代码,帮忙看下 为什么上面定义的$x 是个二维数组吧? double[] x2 = new double[Fit_N*Fit_N]; 然后又看见下面 x2[index + j] = 0; 和 x2[0] = X_Y_Number; 然后再下面为什么又出现 x2[n * Fit_N + index] = temp; 如果翻译成php
$x2[0] 已经等于一个数值了,为什么还能 $x2[0][] = xxx
都是一维数组,没见到二维数组
哦,刚看了下c#基础 ,x2算到最后也是一维数组吧?
@清华大学副院长: 声明的时候也是一维啊!
@清华大学副院长: 二维数组是两个框的,代码里没有啊
@浅草青晨: 哦,我理解错了, 那就是一个一维数组 我以为c# 这样写 arr[m * n] 表示一个二维数组呢 m行 n列
PHP不懂,帮不上忙。