use C# to do matrix manipulation for unity

using System;
using System.Collections;
using System.Collections.Generic;

using System.IO;
using LinearAlgebra.MatrixAlgebra;
using LinearAlgebra.VectorAlgebra;
using LinearAlgebra.LinearEquations;


namespace LinearAlgebra
{

    class Program
    {
        
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!\n\n");
            Matrix aa = Matrix.Eye(3);
            Matrix bb = (-1 * aa);
            Matrix cc = aa * bb ;
            Console.WriteLine(cc);
            IEnumerable<double> col = cc.GetColumn(0);
            Matrix kk = Utility.IEnumerableToMatrix(1, 3, col);
            Console.WriteLine(kk);
            IEnumerator ee= cc.GetDiagonal().GetEnumerator();
            for(int i = 0; i<3; i++)
            {
                ee.MoveNext();
                Console.WriteLine(ee.Current);
                
            }
            Console.WriteLine("Buffer Out!!");
            Console.WriteLine(ee.Current);
            
            Console.WriteLine(Utility.IEnumerableToMatrix(cc.RowCount,1,cc.GetDiagonal()));
            Console.WriteLine(cc.Equals(bb));

            double[] reals= cc.Eigen().Real;
            Console.WriteLine(Utility.ArrayToMatrix(1,reals.Length,reals));
            
            //The way to assign Matrix:First transform double[*] to double[*,*] using this ArraytoMatrix method;
            Matrix qq = new Matrix(Utility.ArrayToMatrix(1, reals.Length, reals));
            Console.WriteLine(qq);

            //The right way to use an enumerator
            IEnumerator enumerator = aa.GetColumn(0).GetEnumerator();
            while (enumerator.MoveNext())
            {
                Console.WriteLine($"Enumerator A is {enumerator.Current}");
            }
            
            //or if using enumerable array then foreach loop:
            foreach(var ii in aa.GetColumn(0))
            {
                Console.WriteLine($"A is {ii}");
            }

            Console.WriteLine(aa.Inverse());
            Console.WriteLine(cc.Inverse());
            Console.WriteLine(aa.Det());     //1
            Console.WriteLine(cc.Det());     //-1

            Console.WriteLine(aa.Count);
            Console.WriteLine(aa.ColumnCount);
            Matrix tanhaa = aa.Map(Math.Tanh);
            Console.WriteLine(tanhaa);
            Console.WriteLine(tanhaa.Power(2));
            Console.WriteLine(aa.Rank());
            aa.SetRow(0, aa.GetRow(1));
            Console.WriteLine(aa);

            Console.WriteLine(aa.Transpose());
            Console.WriteLine(aa);

            aa.SetDiagonal(aa.GetColumn(1));
            Console.WriteLine(aa);

            aa.Save(@"C:\Users\jerry\aa.txt");

            Console.WriteLine("Finish!!");
            double[][] jar = aa.ToJaggedArray();
            Console.WriteLine(jar[0][2]);

            Matrix aaload = Matrix.Load(@"C:\Users\jerry\aa.txt");
            Console.WriteLine(aaload);

            Matrix a1 = Matrix.cBind(Matrix.Random(3, 1), Matrix.Random(3, 2));
            Console.WriteLine(a1);


        }
    }
}

This file: Program.cs
and other dependencies (files) ->-> here ->-> in the same folder.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值