javascript - 如何使用 math.js 从 javascript 中的变量创建矩阵

标签 javascript math.js

假设我有一个变量 Y 的向量,看起来像这样:

VarY = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21, 22,23,24,25,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0

我想使用 math.js 将其转换为这种类型的 Vector:(这样以后我实际上可以使用其他 math.js 函数,例如 Multiply)

VarY: [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]

这可以通过使用 math.matrix([[1],[2],...,[0]]) 对其进行硬编码来轻松完成

但是由于这个向量是可变的,我正在寻找一种使其动态的方法......

我在想:

math.matrix(VarY);

但它不允许这样的变量。

编辑---

此处有更多详细信息:

我正在接收一些数据作为输入,这就是您将在此处看到的“XOriginal”

for(var i=0; i<26; i++){
VarY.push([XOriginal[i].splice(26,1)]); // @@@@ HERE I SAVE A COPY FOR ALL THE Y RESULTS OF THE ORIGINAL DATA
XOriginal[i].splice(26,1);
}

for ( i=0; i<26; i++) {
  VarY.push([0]);
}

最后,当我使用 console.log 时,我的变量 VarY 如下所示:

console.log('VarYReal: ' + VarY);

在我的控制台中,它看起来像这样:

VarYReal: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

现在,由于这个变量没有将其存储为数组或矩阵,这就是我不能使用 math.multiply 的原因

最佳答案

math.js 有一个 reshape()功能。一旦你从原始的js数组创建了一个矩阵,你就可以用它来改变你想要的矩阵:

const math = require('mathjs')
let y = [0, 1, 2,  3, 4]
let m = math.matrix(y)  

console.log(m.size())     // [ 5 ]

math.reshape(m, [m.size()[0], 1])

console.log(m.size())     // [ 5, 1 ]
console.log(m.valueOf())  // [ [ 0 ], [ 1 ], [ 2 ], [ 3 ], [ 4 ] ]

关于javascript - 如何使用 math.js 从 javascript 中的变量创建矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59535717/

相关文章:

javascript - 如何像这样教 vim 缩进

javascript - Angularjs HTTP 方法中的异常处理

node.js - NodeJS - 作为字符串循环遍历范围

javascript - math.js 中的方程评估

javascript - 如何使字符串安全地用作 math.js 表达式

javascript - 如何在不运行服务器的情况下运行 dropzone.js 原型(prototype)?

javascript - 从javascript内部到drupal模块的路径

javascript - 为什么这段 jQuery 代码不将 div 移到右侧?

javascript - 如何在 math.js 中实现 NOR、NAND、XNOR?