コード例 #1
0
ファイル: Trend.cs プロジェクト: shoaib-ijaz/geosoft
        public Matriz GenerateMatrixCross(int order, int num, List<Kpoint> data)
        {
            int matrixSize = SerieCoef(order).Length;
            Matriz matrix = new Matriz(matrixSize);
            Matriz ZMatrix = new Matriz(matrixSize, 1);
            double width = extent[2] - extent[0];
            double height = extent[3] - extent[1];
            double difZ = extentZ[1] - extentZ[0];
            for (int v = 0; v < num; v++)
            {
                double x = (data[v].X - extent[0]) / width;
                double y = (data[v].Y - extent[1]) / height;
                double z = data[v].W;
                for (int row = 0; row < matrixSize; row++)
                {
                    for (int col = 0; col < matrixSize; col++)
                    {
                        matrix[row + 1, col + 1] = matrix[row + 1, col + 1] + Seq(num, order, col, row, x, y);
                    }
                    ZMatrix[row + 1, 1] = ZMatrix[row + 1, 1] + Seq(num, order, row, 0, x, y, z);
                }
            }

            Matriz inver = matrix.Inverse();
            Matriz ind = matrix * inver;

            Matriz result = inver * ZMatrix;
            return result;
        }
コード例 #2
0
ファイル: Trend.cs プロジェクト: shoaib-ijaz/geosoft
        public void GenerateMatrix(int order,  int num, double[,] data)
        {
            int matrixSize = SerieCoef(order).Length;
            Matriz matrix = new Matriz(matrixSize);
            Matriz ZMatrix = new Matriz(matrixSize, 1);
            double width = this.extent[2] - this.extent[0];
            double height = this.extent[3] - this.extent[1];
            double difZ = this.extentZ[1] - this.extentZ[0];
            for (int v = 0; v < num; v++)
            {
                double x = (data[v, 0] - extent[0])/width;
                double y = (data[v, 1] - extent[1])/height;
                double z = data[v, 2];
                for (int row = 0; row < matrixSize; row++)
                {
                    for (int col = 0; col < matrixSize; col++)
                    {
                            matrix[row + 1, col + 1] = matrix[row + 1, col + 1] + Seq(num, order, col, row, x, y);
                    }
                    ZMatrix[row + 1, 1] = ZMatrix[row + 1, 1] + Seq(num, order, row, 0, x, y, z);
                }
            }
            
            Matriz inver = matrix.Inverse();
            Matriz ind = matrix * inver;

            result = inver * ZMatrix;
        }