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

矩阵实例

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


1、存储结构

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

2、矩阵操作

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

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

矩阵抽象数据类型


矩阵编程的实现

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

矩阵类设计

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

赋值初始化函数

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

矩阵加法运算

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

矩阵乘法运算


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

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

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

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

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

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

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

  1. javascript map 排序_数据结构-JavaScript字典结构的编程实现

    字典是一类特殊的数据元素的集合,字典的基本单元为数对,所谓数对是指类似(key,value)形式的数据.每一个数对结构包括了关键字key与该元素对应的value值,在一个普通字典所组成的数对集合中,关 ...

  2. abstract类_【Java】类的结构 - Nemo

    类与对象 类中主要包括五种结构,下面进行对这五种结构进行详细的介绍. 1. 面向对象与面向过程 面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做. 面向对象:强调具备了功能的对象,以类/对象为 ...

  3. robotac属于a类还是b类_工程项目分类A类、B类、C类、D类项目是指什么?注意:不是资料的A、B、C类报建资料...

    展开全部 A类属e69da5e6ba903231313335323631343130323136353331333431356639于监督站表: B类属于工程报验类, C类属于一些工程技术平常施工, ...

  4. 线性代数矩阵行列式_非平方矩阵的行列式| 使用Python的线性代数

    线性代数矩阵行列式 Prerequisites: 先决条件: Defining a Matrix 定义矩阵 Determinant of a Matrix 矩阵的行列式 Note: Determina ...

  5. java内部枚举类_内部类和枚举类

    内部类: 内部类的定义 : 在一个类的内部又定义了一个类,里面的这个类就是内部类. 内部类可以定义在外部类的成员位置(与成员变量的位置相同)或局部位置(意思是,把类写在外部类的方法里面). 什么时候使 ...

  6. C++A类继承B C类_基金定投买a类还是c类好,c类基金为什么不适合定投

    基金定投似乎成为了基金市场的最主要投资方式之一,吸引了大批投资者.但并不是所有类型基金都适合定投,今天我们以A类基金和C类基金为例子,来看看基金定投买a类还是c类好,c类基金为什么不适合定投. 基金定 ...

  7. Java正则表达式校验工具类_【Java工具类】----正则表达式校验工具类

    /** * @Title: RegexValidateUtil.java * @Package org.csun.nc.util * @Description: TODO * @author chis ...

  8. 向量 矩阵 张量_张量,矩阵和向量有什么区别?

    向量 矩阵 张量 机器学习代数 (MACHINE LEARNING ALGEBRA) Algebra is an important element of mathematics and has a ...

  9. java订单编号工具类_[idmiss-common] Java 工具类之- 顺序订单号的生成

    1.前言 这是我写的工具类之一:根据日期生成唯一顺序订单号. 用Java 配合 Redis 实现包含日期的顺序订单号的生成, 效率可以达到 2500+/s 1000W+/h 个 . 2.基本介绍 框架 ...

最新文章

  1. 当中台遇上DDD,我们该如何设计微服务?
  2. 成功解决OpenVideoCall(不可用)以及MSB8020 The build tools for v141 (Platform Toolset = ‘v141‘) cannot be found
  3. centos安装zendopcache
  4. 分辨真假数据科学家的20个问题及回答
  5. 计算机基础知识:原码、反码、补码
  6. 计算机基础及wps office应用_自考本科计算机应用基础考试大纲
  7. c语言全段字符的类别,言语理解规律整理d0c.doc
  8. 60秒计时器的仿真电路_基于伏秒平衡的同步整流方案探讨
  9. ElasticSearch聚合分析
  10. 三态输出门实验报告注意事项_数电基础知识:各种IO输出的类型
  11. mysql 建表报错_mysql innodb 引擎 ,建表时报错:ERROR 1118 (42000)
  12. 给你工资1000一天,让你在没有网络手机电脑的大山里做森林管理工作半年,你愿意吗?
  13. c语言如何输入未知数据类型的_C语言新手踩坑记!大坑小坑全部都是你的!
  14. 人工智能在生活中的应用都有哪些?
  15. java入门到精通6版pdf_java从入门到精通第6章.pdf
  16. android版本迅雷下载,迅雷Android 2.10.2版 说好的删除迅雷7下载记录来了
  17. flask怎么创建虚拟环境_在Windows OS中创建虚拟环境并在本地运行Flask应用程序
  18. 计算机组成原理基础知识点
  19. 使用SVG.Net生成svg格式文字图片
  20. 教你炒股票26:市场风险如何回避

热门文章

  1. html表格右键可编辑,Bootstrap table右键功能实现方法
  2. ad中pcb双面板怎么设置_PCB的设计规则和加工要求参考
  3. android 自定义菜单开发,Android开发学习笔记:浅谈3大类菜单
  4. android 内部类传值,Android Studio中,从内部类
  5. 重写toString()方法(Java篇)
  6. 【图像超分辨率】Image Super-Resolution by Neural Texture Transfer
  7. 电容过大导致电压下降_现场| 典型的断直流电源导致开关误分合案例分析
  8. 电脑f2还原系统步骤_手把手教你如何创建系统还原点,让你的电脑也能时光倒流...
  9. spring timetask 定时任务调度
  10. Homography