提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2012-12-17 16:50:01.000|阅读 360 次
概述:NMath采用的数据视图设计模式,它在存储效率和性能上都有一定的优势,如果与切片相结合,数据视图模式还能够提高非常丰富的矩阵和向量操作语义。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
NMath采用的数据视图设计模式,将不同数据类型加以区分,对向量和矩阵作为不同的数学对象区别处理。例如,在内存中,一个连续的数组可以被当作一个向量元素对象,同样的这个数组,在一行一行布局后,也可以作为一个矩阵元素对象。在任何给定的时间点,许多不同的对象可能会共享一个给定的数据块。数据视图设计模式在存储效率和性能上都有一定的优势,如果与切片相结合,数据视图模式还能够提高非常丰富的矩阵和向量操作语义。
这个类将NMath中的一般向量和矩阵封装为<Type>Matrix 和<Type>Vector,其中<type>可以是Float,Double,FloatComplex或者DoubleComplex。例如,FloatComplexVector类就表示一个单精度复数向量。矩阵和向量类中的每个类都包含一个数据块,数据块中引用的查看参数值。例如,一个向量类的实例包含的数据块,该数据块里面就包括了引用元素的数目及步幅,或元素之间的步增量。同样,矩阵对象也包含了数据块,数据块中包括了行列的数量,连续的行元素之间的距离和连续的列元素之间的距离。
所提供的索引需要进行必要的间接引用,例如,v[i]返回的是向量v数据视图的第i个元素的,A[i,j]返回的是矩阵A的数据视图中第i行的元素。
获得一个特定的数据块的不同视图,最常见的方式是通过切片和范围的索引对象。这些类提供了指定一个拥有固定间距的非负整数的子集的方法。这其实是MATLAB中的冒号运算符。任何整数子集都可以成为矩阵和向量的索引对象。
范围和切片的差别其实只在于指定的整数子集不同。就切片来说,需要被指定的有起点整数,整数的数量和步幅。例如,创建一个切片指定的整数{2,4,6,8,10},指定2开始,共有5个元素,和步幅为2。
定义范围时,则需要指定第一个和最后一个整数。因此,如何整数子集{2,4,6,8,10}是用来创建一个范围对象的,那2即为起点,停止点为10,和2的步幅。
下面是一个例子就是使用切片对象来创建一个新的向量数据视图:
// Create a vector of length 10 containing the integers 1-10: DoubleVector v = new DoubleVector( 10, 1, 1 ); // Construct a new vector, u, that views the first three elements // of v Slice first3 = new Slice( 0, 3 ); DoubleVector u = v[first3];
请注意,DoubleVector索引以接受切片对象来重载,并返回一个新的索引数据视图。
DoubleVector u的表现形式与一个拥有3个元素(1,2,3)的向量架构一样,如下:
u[0] == 1; // true u[1] == 2; // true u[2] == 3; // true u[3]; //Index out of bounds exception!
当u中的值改变的时候,u和新构建向量数据视图的区别就会更明显了。用以下代码将v值改变。
u[2] = 99; v[2] == 99; // true!
根据以上原理,如果需要沿着矩阵的主对角线递增元素,通过以下代码:
DoubleMatrix A = new DoubleMatrix( 5, 8 ); A.Diagonal()++;
使用矩阵类中的Diagonal()就可以完成了。
再次之后,如果需要在不影响其他对象的情况下,再创建一个私有的数据视图,调用DeepenThisCopy()就可以了,如下:
DoubleMatrix A = new DoubleMatrix( 8, 8 ); Range topLeft = new Range( 0, 3 ); // Construct a matrix that views the top left // corner of A. DoubleMatrix AtopLeft = A[ topLeft, topLeft ]; // Make a deep copy of this data AtopLeft.DeepenThisCopy();
这样,数据视图边和切片想结合,实现了丰富的向量与矩阵的操作语义。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:慧都控件网面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢