You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何拼接两个ojAlgo库的ComplexMatrix矩阵?

ojAlgo ComplexMatrix 行拼接方案

高效批量拼接(推荐)

ojAlgo 内置了直接的行拼接工具方法,无需手动逐行填充,性能更优:

import org.ojalgo.matrix.MatrixUtils;
import org.ojalgo.matrix.complex.ComplexMatrix;

// 假设 matrix1 是 r1行n列,matrix2 是 r2行n列的 ComplexMatrix
ComplexMatrix combined = MatrixUtils.concatRows(matrix1, matrix2);

该方法会自动创建对应尺寸的矩阵,并批量复制输入矩阵的元素,内部实现比手动逐行操作更高效。

手动子矩阵填充方案

如果需要精细控制拼接位置,可通过子矩阵视图完成填充:

int r1 = matrix1.countRows();
int r2 = matrix2.countRows();
int n = matrix1.countColumns();

// 创建目标大小的空矩阵
ComplexMatrix combined = ComplexMatrix.FACTORY.makeZero(r1 + r2, n);

// 将第一个矩阵填充到上半部分
combined.subMatrix(0, r1 - 1, 0, n - 1).fillMatching(matrix1);
// 将第二个矩阵填充到下半部分
combined.subMatrix(r1, r1 + r2 - 1, 0, n - 1).fillMatching(matrix2);

subMatrix 返回原矩阵的视图,fillMatching 会批量复制元素,比逐行调用 setRow 或 setElement 效率更高。

ComplexMatrix 的 DenseReceiver 等效实现

ComplexMatrix 可通过 asDenseReceiver() 获取 ComplexDenseReceiver,用于批量写入元素:

ComplexDenseReceiver receiver = combined.asDenseReceiver();
// 先写入 matrix1 的所有元素
receiver.accept(matrix1);
// 接着写入 matrix2 的所有元素
receiver.accept(matrix2);

这种方式属于批量操作,效率与前两种方案相当,适合连续写入多个矩阵的场景。

注意:所有拼接操作要求输入矩阵的列数完全一致,否则会抛出维度不匹配异常。

内容的提问来源于stack exchange,提问作者user642308

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 00:24:59