javascript - 将矩阵列实现为类似对象的数组
问题描述
我正在尝试在 Javascript 中实现一个 Matrix 类,使用单个Float64Array
来存储元素。这些行再次Float64Array
是共享数据的对象ArrayBuffer
。到目前为止,这是一个简单的实现:
class Matrix {
constructor(n = 3, m = 3, i) {
this.n = n;
this.m = m:
let data = new Float64Array(m * n);
if (i) {
data.fill(i);
}
this.data_ = data;
let rows = new Array(n);
for (let j = 0; j < n; j++) {
rows[i] = new Float64Array(this.data_.buffer, 8 * i * m, m);
}
this.rows_ = rows;
}
getRow(i) {
return this.rows_[i];
}
}
这一切都很好,对一行的所有更改都反映在data
,反之亦然。
但我正在努力为这些列找到一个优雅的解决方案。就像一行一样,每一列都应该是一个类似数组的对象,可以用方括号访问并反映底层的变化data
。因此,对于第 n 列colN[i]
应该获取并将值设置为data[i * colCount + n]
。
有没有办法以某种方式将 a 映射ArrayBuffer
到 a TypedArray
,所以TypedArray
不简单地访问 a 的一个连续序列ArrayBuffer
?
还是有另一种方法(也许通过某种方式覆盖方括号 getter 和 setter)?
解决方案
推荐阅读
- pandas - Pandas:将日期时间列与另一个数据框连接(性能)
- node.js - 如果使用 knex 不存在,如何忽略列更新?
- c - c语言中链表中的分段错误
- python - (DataFrame - Groupby) 如何匹配行?
- javascript - 如何使用 ev.target.nextElementSibling ev.targetprevElementSibling 转到下一个/上一个图像灯箱?
- flutter - Flutter DataTable 排序图标未显示
- c++ - 指向 byte[] 的指针指向 std::unique_ptr
不编译 - ssh - 由于 google 计算引擎上的防火墙限制导致的 ssh 端口问题
- flutter - 构建方法中 Flutter Riverpod context.read vs Provider
- c - 线程调用 pthread_wait 现在发出信号后执行在哪里发生?