当前位置: 首页>>代码示例>>C#>>正文


C# Matrix.Multiply方法代码示例

本文整理汇总了C#中Matrix.Multiply方法的典型用法代码示例。如果您正苦于以下问题:C# Matrix.Multiply方法的具体用法?C# Matrix.Multiply怎么用?C# Matrix.Multiply使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Matrix的用法示例。


在下文中一共展示了Matrix.Multiply方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: MultiplyMatrixMatrixExample

        public void MultiplyMatrixMatrixExample()
        {
            var matrix1 = new Matrix(2, 3);
            matrix1[0, 0] = -2;
            matrix1[0, 1] = 3;
            matrix1[0, 2] = 2;
            matrix1[1, 0] = 4;
            matrix1[1, 1] = 6;
            matrix1[1, 2] = -2;

            var matrix2 = new Matrix(3, 4);
            matrix2[0, 0] = 4;
            matrix2[0, 1] = -1;
            matrix2[0, 2] = 2;
            matrix2[0, 3] = 5;
            matrix2[1, 0] = 3;
            matrix2[1, 1] = 0;
            matrix2[1, 2] = 1;
            matrix2[1, 3] = 1;
            matrix2[2, 0] = -2;
            matrix2[2, 1] = 3;
            matrix2[2, 2] = 5;
            matrix2[2, 3] = -3;

            var expectedMatrix = new Matrix(2, 4);
            expectedMatrix[0, 0] = -3;
            expectedMatrix[0, 1] = 8;
            expectedMatrix[0, 2] = 9;
            expectedMatrix[0, 3] = -13;
            expectedMatrix[1, 0] = 38;
            expectedMatrix[1, 1] = -10;
            expectedMatrix[1, 2] = 4;
            expectedMatrix[1, 3] = 32;

            var result = matrix1.Multiply(matrix2);

            Assert.IsTrue(result.Equals(expectedMatrix));
        }
开发者ID:havok,项目名称:ngenerics,代码行数:38,代码来源:MatrixExamples.cs

示例2: MultiplyMatrixDoubleExample

        public void MultiplyMatrixDoubleExample()
        {
            var matrix1 = new Matrix(2, 3);
            matrix1[0, 0] = 1;
            matrix1[0, 1] = 4;
            matrix1[0, 2] = 5;
            matrix1[1, 0] = -3;
            matrix1[1, 1] = 2;
            matrix1[1, 2] = 7;

            var expectedMatrix = new Matrix(2, 3);
            expectedMatrix[0, 0] = 2;
            expectedMatrix[0, 1] = 8;
            expectedMatrix[0, 2] = 10;
            expectedMatrix[1, 0] = -6;
            expectedMatrix[1, 1] = 4;
            expectedMatrix[1, 2] = 14;

            var result = matrix1.Multiply(2);
            Assert.IsTrue(result.Equals(expectedMatrix));
        }
开发者ID:havok,项目名称:ngenerics,代码行数:21,代码来源:MatrixExamples.cs

示例3: ProcessModifyWorldTransform

            private void ProcessModifyWorldTransform(byte[] recordData)
            {
                MemoryStream _ms = null;
                BinaryReader _br = null;
                try
                {
                    _ms = new MemoryStream(recordData);
                    _br = new BinaryReader(_ms);

                    var eM11 = _br.ReadSingle();
                    var eM12 = _br.ReadSingle();
                    var eM21 = _br.ReadSingle();
                    var eM22 = _br.ReadSingle();
                    var eDx = _br.ReadSingle();
                    var eDy = _br.ReadSingle();
                    var iMode = (EmfTransformMode)_br.ReadInt32();

                    var matrix = new Matrix(eM11, eM12, eM21, eM22, eDx, eDy);

                    switch (iMode)
                    {
                        case EmfTransformMode.MWT_IDENTITY:
                            Transform = new Matrix();
                            break;

                        case EmfTransformMode.MWT_LEFTMULTIPLY:
                            Transform.Multiply(matrix, MatrixOrder.Append /* TODO: is it the correct order? */);
                            break;

                        case EmfTransformMode.MWT_RIGHTMULTIPLY:
                            Transform.Multiply(matrix, MatrixOrder.Prepend /* TODO: is it the correct order? */);
                            break;

                        default:
                            throw new NotImplementedException();
                    }

                    System.Diagnostics.Debug.Assert(_ms.Position == _ms.Length);
                }
                finally
                {
                    if (_br != null)
                        _br.Close();
                    if (_ms != null)
                        _ms.Dispose();
                }
            }
开发者ID:hnafar,项目名称:SvgNet,代码行数:47,代码来源:SVGGraphics.cs

示例4: Test

    /// <summary>
    /// Some test code to check that there are no typing errors in the formulars.
    /// </summary>
    public static void Test()
    {
      XMatrix xm1 = new XMatrix(23, -35, 837, 332, -3, 12);
      Matrix  m1 = new Matrix(23, -35, 837, 332, -3, 12);
      DumpMatrix(xm1, m1);
      XMatrix xm2 = new XMatrix(12, 235, 245, 42, 33, -56);
      Matrix  m2 = xm2.ToMatrix();
      DumpMatrix(xm2, m2);

//      xm1.Multiply(xm2, XMatrixOrder.Prepend);
//      m1.Multiply(m2, MatrixOrder.Append);
      xm1.Multiply(xm2, XMatrixOrder.Append);
      m1.Multiply(m2, MatrixOrder.Append);
      DumpMatrix(xm1, m1);

      xm1.Translate(-243, 342, XMatrixOrder.Append);
      m1.Translate(-243, 342, MatrixOrder.Append);
      DumpMatrix(xm1, m1);

      xm1.Scale(-5.66, 7.87);
      m1.Scale(-5.66f, 7.87f);
//      xm1.Scale(-5.66, 7.87, XMatrixOrder.Prepend);
//      m1.Scale(-5.66f, 7.87f, MatrixOrder.Prepend);
      DumpMatrix(xm1, m1);


      xm1.Rotate(135, XMatrixOrder.Append);
      m1.Rotate(135, MatrixOrder.Append);
      //      xm1.Scale(-5.66, 7.87, XMatrixOrder.Prepend);
      //      m1.Scale(-5.66f, 7.87f, MatrixOrder.Prepend);
      DumpMatrix(xm1, m1);

      xm1.RotateAt(177, new XPoint(-3456, 654), XMatrixOrder.Append);
      m1.RotateAt(177, new PointF(-3456, 654), MatrixOrder.Append);
      DumpMatrix(xm1, m1);

      xm1.Shear(0.76, -0.87, XMatrixOrder.Prepend);
      m1.Shear(0.76f, -0.87f, MatrixOrder.Prepend);
      DumpMatrix(xm1, m1);

      xm1 = new XMatrix(23, -35, 837, 332, -3, 12);
      m1 = new Matrix(23, -35, 837, 332, -3, 12);

      XPoint[] xpoints = new XPoint[3]{new XPoint(23, 10), new XPoint(-27, 120), new XPoint(-87, -55)};
      PointF[] points = new PointF[3]{new PointF(23, 10), new PointF(-27, 120), new PointF(-87, -55)};

      xm1.TransformPoints(xpoints);
      m1.TransformPoints(points);

      xm1.Invert();
      m1.Invert();
      DumpMatrix(xm1, m1);

    }
开发者ID:BackupTheBerlios,项目名称:zp7-svn,代码行数:57,代码来源:XMatrix.cs

示例5: Solve

        public static ResultFEM Solve(Matrix<double> K, Matrix<double> f, int[] bc)
        {
            // Create dof array:
            int ndof = f.RowCount;

            // Initialize displacement vector
            Matrix u = new DenseMatrix(ndof, 1);

            int[] dof = new int[ndof];
            for (int i = 0; i < ndof; i++)
            {
                dof[i] = i;
            }
            // Create the free dofs:
            int[] fdof = dof.Except(bc).ToArray();

            int nfdof = fdof.Length; // Number of free dofs.
            int nbdof = ndof - nfdof; //Constrained dofs

            // Create the permutation array which puts the constrained dofs last:
            int[] permute = bc.Union(fdof).ToArray();

            Permutation perm = new Permutation(permute);
            Permutation invPerm = perm.Inverse();
            Matrix<double> KPermuted = DenseMatrix.OfMatrix(K);
            KPermuted.PermuteRows(invPerm);
            KPermuted.PermuteColumns(invPerm);

            // Split K:::
            Matrix<double> Kff = KPermuted.SubMatrix(nbdof, nfdof, nbdof, nfdof);
            System.Console.WriteLine(Kff);  //Down right corner of matrix
            Matrix<double> Kfp = KPermuted.SubMatrix(nbdof, nfdof, 0, nbdof); //Down left corner of matrix

            // Split F:::
            Matrix<double> fPermuted = DenseMatrix.OfMatrix(f);
            fPermuted.PermuteRows(invPerm);
            Matrix<double> ff = fPermuted.SubMatrix(nbdof, nfdof, 0, 1);

            Matrix<double> up = u.SubMatrix(0, nbdof, 0, 1); // Must set up to constrained values in bc.

            // Solve for the unknown displacements:::
            Matrix<double> s = Kff.Solve(ff.Subtract(Kfp.Multiply(up)));
            u.SetSubMatrix(nbdof, 0, s); // Set displacements back.

            System.Console.WriteLine(u);
            // Permute back u
            u.PermuteRows(perm);

            System.Console.WriteLine("U after permut");
            System.Console.WriteLine(K);
            System.Console.WriteLine(u);
            System.Console.WriteLine(f);

            // Get reaction forces:
            Matrix<double> Q = K.Multiply(u).Subtract(f);

            ResultFEM result = new ResultFEM(u, Q);

            return result;
        }
开发者ID:CALFEM,项目名称:calfem-csharp,代码行数:60,代码来源:Calfem.cs


注:本文中的Matrix.Multiply方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。