测量小百科 | SeeSharpTools - Vector 算法介绍
来源: | 作者:JYTEK | 发布时间: 2022-03-15 | 917 次浏览 | 分享到:

关键词:SeeSharpTools、数组、向量


导读

SeeSharpTools是锐视测控平台的重要组成部分,为用户提供了测试测量常用的功能。为了给用户提供更好的支持,简仪会定期的更新SeeSharpTools中的功能。本期小百科就介绍SeeSharpTools中近期新增的算法:Vector


Vector算法介绍

Vector是数组计算中的一个类,其中封装了多种方法,用于不同类型数组间的计算。

对比之前SeeSharpTools中的数组计算,增加了数组比较、复数数组生成、点积计算、弧度/角度换算、对数计算等新的方法。支持float、double、short、int、Complex等更多数据类型。

Vector算法基于Intel的IPP和MKL软件函数库封装,计算更高效且结果可靠。

下表罗列了Vector类中的方法。

这里只介绍了Vector算法的功能分类,其中每种算法的具体用法,可以在SeeSharpTools中的手册中查阅。


Vector算法演示

此次算法更新,建立在MKL/IPP算法库的基础上,效率有了很大提升。

以数组加法为例,下面的代码演示如何调用Vector中的算法,并使用StopWatch对计算过程进行计时,对计算效率进行对比。

            //建立数组

            double[] data = new double[100000000];

            Random random = new Random();

            for (int i = 0; i < data.Length; i++)

            {

                data[i] = random.Next(0, 100);

            }

 

            //调用Vector做数组加法并计时

            Stopwatch sw = new Stopwatch();

            sw.Start();

            Vector.ArrayAdd(data, 5);

            sw.Stop();

            Console.WriteLine(sw.ElapsedMilliseconds);

 

            //普通方式做数组加法并计时

            sw.Restart();

            for (int i = 0; i < data.Length ; i++)

            {

              data[i]=  data[i] + 5;

            }

            sw.Stop();

            Console.WriteLine(sw.ElapsedMilliseconds);

 

            Console.ReadKey();


可以看到,这段代码,是将一个100M的数组中每个元素加5,运行之后,可以看到,常规算法需要712ms,而Vector中的算法只需要167ms。

图 1  100M数据运行结果