C# Vector Example

← All NMath Code Examples

 

using System;

using CenterSpace.NMath.Core;

namespace CenterSpace.NMath.Examples.CSharp
{
  /// <summary>
  /// A .NET example in C# showing some of the basic functionality of the vector classes.
  /// </summary>
  class VectorExample
  {
    static void Main( string[] args )
    {
      var v = new DoubleVector( "[1 2 3 4 5 6]" );

      Console.WriteLine();

      // You can obtain different vector "views" of the data in v.
      // For example, vector viewing every other element of v.
      DoubleVector everyOther = v[new Range( 0, Position.End, 2 )];
      Console.WriteLine( "everyOther = {0}", everyOther.ToString() ); // [1 3 5]
      Console.WriteLine();

      // Remember that this vector is a different views of the data in
      // v. Changing a value in everyOther will change
      // the corresponding value in v.
      everyOther[1] = 10;
      Console.WriteLine( "Value of v[2] == 10 is {0}", v[2] == 10 ); // True
      Console.WriteLine();

      // You can make sure that your data is not being shared with anyone
      // else by invoking the DeepenThisCopy method. This will insure that
      // you have your own private copy of the data and that it occupies
      // contiguous storage.
      v.DeepenThisCopy();
      everyOther[1] = 100;
      Console.WriteLine( "Value of v[2] == 100 is {0}", v[2] == 100 ); // False
      Console.WriteLine();

      // The Resize method changes the length of a vector. Values are
      // truncated or padded with zeros as appropriate.
      // First lets save vs original values.
      var vOrig = (DoubleVector) v.Clone();

      // Now resize v.
      v.Resize( v.Length + 2 );
      // v will have its original values in the first v.Length-1 elements.
      // The last two elements will be zero.
      DoubleVector vOrig1 = v[new Slice( 0, vOrig.Length )];
      Console.WriteLine( "values of v preserved during resize is {0}", vOrig == vOrig1 );
      Console.WriteLine();
      Console.WriteLine( "v resized = {0}", v.ToString() );
      Console.WriteLine();

      // vector dot, or inner, products are available as
      // static methods in the NMathFunctions class.
      var u = new DoubleVector( v.Length, 1, 1 );
      double dp = NMathFunctions.Dot( v, u );
      Console.WriteLine( "The dot product of {0} with {1} = {2}", v.ToString(), u.ToString(), dp );
      Console.WriteLine();

      // There are also functions for computing mean and variance of the numbers in a vector.
      double mean = NMathFunctions.Mean( v );
      double var = NMathFunctions.Variance( v );
      Console.WriteLine( "The mean of v is {0}, and the variance is {1}", mean, var );
      Console.WriteLine();

      Console.WriteLine();
      Console.WriteLine( "Press Enter Key" );
      Console.Read();

    } // Main

  }// class

}// namespace

← All NMath Code Examples
Top