一个矩阵的简单运算工具类
2017-09-28 18:08
225 查看
object MatrixTool extends App { class Matrix(val m: Array[Array[Double]]) { val rows = m.length val cols = m(0).length def apply(r: Int, c: Int) = m(r)(c) def update(r: Int, c: Int, v: Double): Unit = { m(r)(c) = v } private def compute(that: Matrix, f: (Double, Double) => Double): Array[Array[Double]] = { if (that.dim != dim) throw new Exception("can only add matrix with same size") (for (i <- m.indices) yield m(i).zip(that.m(i)).map(v => f(v._1, v._2))).toArray } def dim = (rows, cols) def *(s: Double) = { new Matrix( (for (i <- m.indices) yield m(i).map(_ * s)).toArray ) } def +(that: Matrix) = new Matrix(compute(that, (a, b) => a + b)) def *(that: Matrix) = new Matrix(compute(that, (a, b) => a * b)) override def toString = m.map(_.mkString(" ")).mkString("\n") } val m = new Matrix(Array(Array(1.0, 2.0, 3.0), Array(4.0, 5.0, 6.0))) val n = new Matrix(Array(Array(1.0, 2.0, 3.0), Array(4.0, 5.0, 6.0))) println(m) println(n) println((m * 2 + n) * m) }
相关文章推荐
- 关于一个简单的矩阵运算程序,将A矩阵加上A矩阵的逆放到B矩阵中。
- 一个简单封装的jdbc工具类
- 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZde
- OpenCV中简单矩阵运算
- php实现一个简单的四则运算计算器
- 写一个简单的python格式化时间格式的工具类
- C++第5周任务【任务2】本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,二则也为第10章做运算符重载等积累些感性认识。
- C++ 一个简单的解释器 - 四则运算
- 一个Android下ping的简单工具类
- 用C++编写一个随机产生多个两位数四则运算式子的简单程序
- 一个简单的矩阵类的实现(参照《数据结构C++语言描述》第五章)
- shell脚本的一个简单运算
- 一个简单的矩阵类编写实例
- Swift - 简单封装一个工具类模板
- 闲来无事,将自己收集到的工具类封装了下,做了一个lib,写了个简单的mvp,初学者可以看看
- javaScript简单四则运算工具类ElementaryArithmeticUtils
- 一个简单的四则运算程序C语言实现--实现处理括号
- JS实现简单的二维矩阵乘积运算
- 异或加密法 在对文本进行简单加密的时候,可以选择用一个n位的二进制数,对原文进行异或运算。 解密的方法就是再执行一次同样的操作。
- 用于JS日期格式化,以及简单运算的Date包装工具类