javascript - 如何使用math.js从javascript中的变量创建矩阵
问题描述
假设我有一个变量 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
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 ] ]
推荐阅读
- ruby-on-rails - 使用 okHttp 从 kotlin android 应用程序连接到 EC2 托管的 Rails 服务器时出错
- arrays - VBA 检查单元格值是否是数组的一部分
- java - 如何参数化弹簧控制器和百里香叶中的链接值?
- javascript - 如何通过使用javascript/angular单击该值的按钮来为数组的一个值启用文本区域
- java - 无法向 PUSH 通知添加操作/按钮
- node.js - NodeJS、React、MongoDB 网站中的支付集成
- javascript - css.content与Unicode的Webfont关系
- alfresco - Alfresco特定路径下的文件夹结构创建
- shopify - Shopify 中一家商店的多家运输公司
- angular - 生产构建不会创建唯一的哈希 - Angular 9