【问题标题】:How to create a matrix using math.js from a variable in javascript如何使用math.js从javascript中的变量创建矩阵
【发布时间】:2019-12-31 03:29:16
【问题描述】:

假设我有一个变量 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 的原因

【问题讨论】:

  • 假设你实际上有Vary: [1, 2, 3, ...]你可以做var asArrays = VarY.map(n =&gt; [n])
  • @ChrisG 这个问题的答案很好,为什么要评论呢?
  • @ChrisG 我正在尝试这种方式,它似乎没有任何效果,我认为是因为它不是 [] 形式,我不知道它是否与它有关事实上 VarY 是数组中的一堆 .push() 。
  • @RodrigoZazuetaDonnadieu 您需要更具体地了解VarY 的格式,因为您编写的 (VarY = 1,2,3,...) 不是有效的 JavaScript。包括如何分配和填充 VarY 的代码(或最小等效代码)会有所帮助,或者它为什么不起作用(math.matrix(...) 的结果是什么?)
  • @Klaycon 好的,我会尝试在答案中添加更多细节,以便更容易阅读。

标签: javascript math.js


【解决方案1】:

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 ] ]

【讨论】:

  • 不好意思问,但是...当我尝试使用 math.matrix(VarY) 时,它说 Script Error... 这是否意味着我的 VarY 格式不是数组?我觉得很愚蠢,但我找不到我的错误。
  • @RodrigoZazuetaDonnadieu 请用错误的内容编辑问题(您只是收到错误的事实并没有帮助,但是错误会与消息一起写入以告诉您什么你做错了!)以及VarY的声明,因为目前还不清楚它是数组还是其他数据结构。
  • @Klaycon 终于找到了我的问题,现在我学会了如何使用JSON.stringify,我看到变量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]]所以我现在的问题是如何转换从 Prototype 变成普通数组...
猜你喜欢
  • 2015-02-04
  • 1970-01-01
  • 2021-06-13
  • 1970-01-01
  • 2012-07-10
  • 1970-01-01
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多