在Node.js中以数组的形式加载一个MATLAB表格文件

crcmnpdw  于 2022-11-15  发布在  Matlab
关注(0)|答案(2)|浏览(164)

我目前正在为一个Web应用程序构建一个测试服务器,它应该通过WebSocket向它提供虚假数据。假数据位于一个MATL AB表文件(.mat)中。MAT文件基本上只是一个4000*192的数组。我想把它Map到一个Java脚本数组中,这样我就可以迭代它,并将其逐列发送给客户端。
我只是不知道如何在Node.js中将MatLab表转换为一个javascript数组。由于jdataview处理节点缓冲区的方式,我发现的所有库都不支持node.js。

zd287kbt

zd287kbt1#

我相信您正在尝试加载.mat文件。正如Vasyl前面提到的,下面的git存储库是您最好的选择-Read Mat File
请试一下这个-

var jBinary = require('jbinary')
var MAT = require('jMatFile')

jBinary.load('myMat.mat', MAT).then(function (binary) {
  var mat = binary.readAll
  // or equivalently
  var mat = binary.read('mat')
})

我能够将数据加载到控制台,但现在正在努力处理其他事情。
它还在文档中说,该排版只适用于完全支持类型化数组的JS引擎。截至4年前(回购最近一次更新),该限制故意排除:

  • Pantomjs,因为它不支持Float64Array
  • 由于jdataview对节点缓冲区的特殊处理,NodeJS

您还必须安装不在npm目录中的jMatFile,同样,Vasyl在前面的评论中指出这一点是正确的。在你开始通常的‘NPM’之前运行这些程序-

npm i jBinary

npm i https://github.com/fluffynukeit/jMatFile.git
5sxhfpxr

5sxhfpxr2#

使用此模块:https://github.com/KovacsGG/mat4js
按如下方式安装:

npm i mat-for-js

示例代码:

import fs from "fs";
import { read as readmat } from "mat-for-js";

fs.readFile("my_file.mat", null, (err, data) => {
    let final = readmat(data.buffer);
    console.log(final);
});

相关问题