F# Vector Example

← All NMath Code Examples



namespace CenterSpace.NMath.Examples.FSharp

open System
open CenterSpace.NMath.Core

module VectorExample =

  /// <summary>
  /// A .NET example in C# showing some of the basic functionality of the vector classes.
  /// </summary>

  let v = new DoubleVector("[1 2 3 4 5 6]")

  // You can obtain different vector "views" of the data in v.
  // For example, vector viewing every other element of v.
  let everyOther = v.[new Range(0, Position.End, 2)]
  printfn "everyOther = %s" (everyOther.ToString()) // [1 3 5]
  printfn ""

  // 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.0
  printfn "Value of v[2] == 10 is %A" (v.[2] = 10.0) // True
  printfn ""

  // 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() |> ignore
  everyOther.[1] <- 100.0
  printfn "Value of v[2] == 100 is %A" (v.[2] = 100.0) // False
  printfn ""

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

  // Now resize v.
  v.Resize(v.Length + 2) |> ignore
  // v will have its original values in the first v.Length-1 elements.
  // The last two elements will be zero.
  let vOrig1 = v.[new Slice(0, vOrig.Length)]
  printfn "values of v preserved during resize is %s" ((vOrig = vOrig1).ToString())
  printfn ""
  printfn "v resized = %s" (v.ToString())
  printfn ""

  // vector dot, or inner, products are available as
  // static methods in the NMathFunctions class.
  let u = new DoubleVector(v.Length, 1.0, 1.0)
  let dp = NMathFunctions.Dot(v, u)
  printfn "The dot product of %s with %s = %A" (v.ToString()) (u.ToString()) dp
  printfn ""

  // There are also functions for computing mean and variance of the numbers in a vector.
  let mean = NMathFunctions.Mean(v)
  let var = NMathFunctions.Variance(v)
  printfn "The mean of v is %A, and the variance is %A" mean var
  printfn ""

  printfn "Press Enter Key"
  Console.Read() |> ignore 

← All NMath Code Examples