【问题标题】:Math.js access a single element in a matrixMath.js 访问矩阵中的单个元素
【发布时间】:2018-01-23 23:25:33
【问题描述】:

这看起来是一个太基础的工作。但是,我做不到。

我在 HTML 代码中添加了math.js

<script src="js/math.min.js"></script>

我在firefox控制台中定义了一个矩阵:

var M = math.matrix([[1,0,0,4],[0,1,0,2],[0,5,1,9],[11,2,3,1]]);

到目前为止一切都很好。

M
Object { _data: Array[4], _size: Array[2], _datatype: undefined }

现在,我想访问矩阵的单个元素:

M.index(1,2)

我得到一个错误

TypeError: M.index 不是函数

【问题讨论】:

    标签: javascript matrix math.js


    【解决方案1】:

    It looks like you need to use math.index.

    M.subset(math.index(1, 2));
    

    但正如作者所指出的,首选方法是使用.get

    M.get([1, 2]);
    

    在撰写本文时,此功能是首选,但文档仍在迎头赶上。

    【讨论】:

    • 谢谢,它确实有效。但与普通的阵列相比,这应该是一个漫长的过程吗?在其他语言中,它就像 M[1][2]M.at(1,2)
    • @ar2015 这就是图书馆设计者构建它的方式。您不能在 Javascript 中重载 [] 运算符,因此他们不允许您执行 M[1][2]。至于他们为什么不把那个方法给矩阵“类”,你得问他们。
    • 有什么方法可以给现有类添加补丁功能?
    • @ar2015 如果您可以访问主矩阵构造函数,那么您可以扩展它的原型并添加您想要的任何内容。 I also found this hiding in their codebase 矩阵可以实现 get 函数。 M.get([1, 2]) 但由于我找不到强大的文档,所以要小心。
    • 我是math.js的作者,使用math.index确实很啰嗦,因为我们不能重载JS操作符,所以很有必要。您确实可以安全地使用 Matrix.get 和 Matrix.set 来获取/设置矩阵的各个值。我们目前正在努力记录这一点,这些矩阵方法在文档中缺失。
    【解决方案2】:

    除了M.get([1, 2]),你还可以这样做——

    var a = M._data;    // a is a multidimensional array
    console.log(a[1][2]);
    

    【讨论】:

      猜你喜欢
      • 2014-05-03
      • 1970-01-01
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多