c++矩阵类_数据结构-JavaScript矩阵类的设计与实现

矩阵是线性代数课学习的重点内容之一,也是线性代数常见工具之一,在应用数学、统计分析、计算机科学、计算机图像处理级物理等多学科中均有应用。矩阵主要是指数据的行列排列的形式,由行row与列col所组成,在数学中M*N矩阵是指具有M行与N列的元素的排列的集合。如下图给出了一个5行5列的矩阵:

aa43b832fa117f6a63e995964d760e6a.png

矩阵实例

以上给出了矩阵A,矩阵中所有的元素通过A的下标形式进行表示,Aij表示矩阵中第i行,j列的元素。按照矩阵的特点,矩阵可以划分为对角矩阵、单位矩阵、对称矩阵等多种形式。从矩阵结构可以看出,矩阵有着严格的结构及元素表示的方法,因此可以以基本数据结构为基础设计编制矩阵结构类型,实现矩阵的基本操作。基于以上分析结合教学需要,本文主要介绍如何使用JavaScrpt完成矩阵类的设计与编制。


1、存储结构

矩阵元素的存储,矩阵元素的存储可以按照行主序与列主序等规则采用JavaScript提供的基本数据类型实现矩阵元素的存储及关系表示。因此在设计矩阵类时可以使用一维数组与二维数组进行存储结构的设计。

2、矩阵操作

矩阵操作即为矩阵的运算,在线性代数中定义的常用矩阵运算主要包括矩阵的加法、矩阵乘法与矩阵的转置三类基本运算。因此可以定义矩阵对象操作方法分别用于实现加法运算、乘法运算与转置运算等三类基本运算。其中矩阵加法需要注意只能够允许同型矩阵进行加运算,乘法运算需要保证相乘两个矩阵,第一个的列数与第二个的行数相同。

综上所示,矩阵数据类型可以存储有限有序的元素,并且可完成矩阵的加法、乘法等相关运算,矩阵抽象数据类型描述如下:

872b5647c9000c56deff4df71638713e.png

矩阵抽象数据类型


矩阵编程的实现

本例设计采用二维数组实现矩阵数组元素的存储,定义类属性rows与columns表示矩阵的行与矩阵的列。在矩阵初始化时按照行列进行二维数组的初始化操作。定义加运算方法、乘法运算与转置运算等实现矩阵的基本运算。矩阵整体类设计描述如下图所示:

726905b375473048cf40d38e9e9841e7.png

矩阵类设计

矩阵类设计如上图所示,为实现矩阵功能特定义了矩阵赋值类,将矩阵采用一维数组形式进行矩阵的赋值,实现二维数组存储。将矩阵加法运算Add、乘法运算Mutiply与转置运算Transpose定义为静态成员函数,实现调用与访问。其中initMatrix方法实现矩阵赋值,实现代码描述如下:

1c5b5edef6b99f7d38e55e1b681a2e6b.png

赋值初始化函数

矩阵加法运算Add方法实现将同型矩阵进行加法运算,按照二维数组对应下标相等进行值的加运算,最终实现矩阵的加法,其实现代码描述如下:

1f26c2e094c76dfb2e925500a9490311.png

矩阵加法运算

矩阵乘法运算主要按照矩阵乘法运算规则进行乘法运算,如C=A*B,结果Cij对应的元素是A矩阵的第i行与B矩阵的第j列对应元素成绩的和。矩阵乘法运算编程实现代码表述如下图:

61687aa8cb891ef1c2fb89f393afb917.png

矩阵乘法运算


由于篇幅限制,其他方法不再说明,可在本矩阵基础上进一步开发。本头条号长期关注编程资讯分享;编程课程、素材、代码分享及编程培训。如果您对以上方面有兴趣或代码错误、建议与意见,可以联系作者,共同探讨。期待大家关注!如需案例完整代码请关注并私信,往期数据结构文章链接如下:

数据结构-JavaScript字典结构的编程实现

数据结构-JavaScript线性表的数组描述与实现

数据结构-JavaScript链表的设计与实现

数据结构-JS优先队列实现及排序应用

数据结构-使用JavaScript编程实现队列(Queue)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246128.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GPU Skin

转自:http://geekfaner.com/unity/blog4_GPUSkin.html GPU Skin这门技术在端游时代属于标配,特别是MMO游戏,但是手游时代就要case by case了,因为手机的GPU资源还是很珍贵的(后处理之类的)。作为技术人员&…

button按钮onclick触发不了_单按钮启停:测试模拟脉冲发生器的动作

灯闪烁所模拟是PLC单方面向控件输出信号的过程,控件也可以向模拟PLC输出信号。做一个带反馈灯的按钮,被按下后点亮,再按一下熄灭,且使按钮自保需要一定的接触时间。对应的PLC程序需要一个脉冲发生器(假设地址为L602) 把按钮触点信…

图形学教程Lecture 2: Review of Linear Algebra知识点总结

视频链接:https://www.bilibili.com/video/BV1X7411F744?p2 课程主页链接:http://games-cn.org/intro-graphics/ 课件PPT链接:http://games-cn.org/graphics-intro-ppt-video/ 1. 点乘 2. 点乘应用 获得两个向量的夹角:衡量两…

code换取微信openid_「干货」微信支付前后端流程整理(Vue+Node)

作者:河畔一角转发链接:https://mp.weixin.qq.com/s/ANLjtieWELr39zhgRAeF1w前言最近有不少同学希望我能够把微信支付的前后端流程整理一下,"虽然买了课程,依然看的比较晕"。实际上,我在2019年下半年出了一篇…

Games101现代图形学入门Lecture 3: Transformation知识点总结

视频链接:https://www.bilibili.com/video/BV1X7411F744?p3 课程主页链接:http://games-cn.org/intro-graphics/ 课件PPT链接:http://games-cn.org/graphics-intro-ppt-video/ 1. 缩放矩阵 2. 反射矩阵 3. 切变矩阵 4. 旋转矩阵 5. 线性…

pytorch forward_pytorch使用hook打印中间特征图、计算网络算力等

0、参考https://oldpan.me/archives/pytorch-autograd-hookhttps://pytorch.org/docs/stable/search.html?qhook&check_keywordsyes&areadefaulthttps://github.com/pytorch/pytorch/issues/598https://github.com/sksq96/pytorch-summaryhttps://github.com/allensll…

Games101现代图形学入门Lecture 4: Transformation Cont知识点总结

视频链接:https://www.bilibili.com/video/BV1X7411F744?p4 课程主页链接:http://games-cn.org/intro-graphics/ 课件PPT链接:http://games-cn.org/graphics-intro-ppt-video/ 1. 3D变换 缩放和平移矩阵 旋转矩阵 欧拉角:rol…

Hash和红黑树以及其在C#中的应用

参考资料&#xff1a; .Net 中HashTable&#xff0c;HashMap 和 Dictionary<key,value> 和List<T>和DataTable的比较 - 王若伊_恩赐解脱 - 博客园 c#HashSet源码解析_fdyshlk的博客-CSDN博客_c# hashset 红黑树和哈希表的区别 - 安全技术 - 亿速云 一、基本概念…

networkx 标签_networkx绘制BA无标度网络

step1: 导入networkx复杂网络库、matplotlib.pyplot、pandasimport networkx as nximport matplotlib.pyplot as pltimport pandas as pdstep2: 绘制BA无标度网络Gnx.barabasi_albert_graph(1000,1) #generate BA networkposnx.spring_layout(G) #set layoutnodecolorG.degree(…

Unity URP中的多Pass Shader和Planer shadow

一 .Unity移动端软阴影技术总结&#xff1a; https://blog.csdn.net/jxw167/article/details/82422891 二. 平面阴影的原理 https://zhuanlan.zhihu.com/p/42781261 https://zhuanlan.zhihu.com/p/31504088 王者荣耀游戏使用的就是该方法&#xff0c;已经有上线产品验证过…

java连接mongodb_第78天: Python 操作 MongoDB 数据库介绍

MongoDB 是一款面向文档型的 NoSQL 数据库&#xff0c;是一个基于分布式文件存储的开源的非关系型数据库系统&#xff0c;其内容是以 K/V 形式存储&#xff0c;结构不固定&#xff0c;它的字段值可以包含其他文档、数组和文档数组等。其采用的 BSON(二进制 JSON )的数据结构&am…

URP中的2D Light光照在移动端不生效的问题

最近在尝试用URP推出的还在preview阶段的2D Render系统&#xff0c;发现2D光照在打成APK后失效&#xff0c;尝试了些方法后发现把2d光照用到的shader放进设置中的built in shader后可以解决问题&#xff1a;

大连开发区取暖费能微信支付吗_下半年教资报考人数增加,那到底能不能异地报考呢?...

想要每周获取两篇群文件快扫码进群吧~因为教师资格证认定的问题&#xff0c;最近教师资格证备考又被广大考生提上了日程&#xff0c;由于“先上岗&#xff0c;后考证”政策&#xff0c;小编预测下一年教师资格证考试的通过率肯定没有以前那么高了&#xff0c;不少人就想选择异地…

python3项目源代码下载_2019年最值得关注的34个Python开源项目——Let's go!

踏着人工智能、区块链的东风&#xff0c;近年来一路“横冲直撞”的 Python 在实现了从小众语言到主流的完美转身后&#xff0c;一头扎进了 2019&#xff0c;依旧没有透出丝毫停下来的架势&#xff0c;反倒有些越烧越热的味道。本文将为你介绍 2019 年最值得关注的 34 个 Python…

Unity 音频优化方案

参考资料&#xff1a; https://www.cnblogs.com/bearhb/p/11210136.html https://blog.csdn.net/chenfujun818/article/details/81710895 文件格式 mp3:失真小&#xff0c;适合音质要求高的文件&#xff0c;例如BGM wav:资源大&#xff0c;不推荐 ogg:压缩比高&#xff0c;适…

android home键后计时拉起app_使用React Native完成App软件

搭建开发环境安装react-native-cli&#xff1a;npm i -g react-native-cliAndroid SDK安装Android SDK并启动进行配置&#xff1a;配置环境变量export ANDROID_HOME~/Library/Android/sdk export PATH${PATH}:${ANDROID_HOME}/tools export PATH${PATH}:${ANDROID_HOME}/platfo…

Unity AssetBundle内存管理相关问题

AssetBundle机制相关资料收集 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化. Unity3D 里有两种动态加载机制&#xff1a;一个是Resources.Load&#xff0c;另外一个通过AssetBundle,其实两者区别不大。 Resources.L…

移动超级sim卡 无法下载卡_中国移动发布超级SIM卡:全变了

近日&#xff0c;中国移动正式公布了《中国移动超级SIM卡技术白皮书》&#xff0c;明确乐中国移动对于个人领域SIM卡的发展方向、架构设计、能力要求&#xff0c;旨在为行业规划设计SIM卡相关技术、产品和解决方案时提供参考和指引。据悉&#xff0c;中国移动的超级SIM卡增强了…

echart中拆线点的偏移_Qt中圆弧和扇形的绘制

在超声软件的开发中&#xff0c;超声成像模块需要绘制圆弧&#xff0c;例如绘制一个扇形的取样框&#xff0c;左右是一条直线&#xff0c;上下是一个圆弧&#xff0c;像这样。Qt中使用QPainter::drawArc绘制圆弧&#xff0c;使用QPainter::drawPie绘制扇形。圆弧和扇形的绘制接…

反向Z(Reversed-Z)的深度缓冲原理

参考文章&#xff1a;https://zhuanlan.zhihu.com/p/75517534 https://zjinc36.github.io/2020/03/10/2020-20200309-%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E6%B5%AE%E7%82%B9%E6%95%B0%E4%B8%8E%E6%B5%AE%E7%82%B9%E6%95%B0%E7%9A%84%E7%B2%BE%E5%BA%A6%E9%97%AE%E9%A2%98/ …