【问题标题】:How can I concatenate multiple rows in a matrix如何连接矩阵中的多行
【发布时间】:2010-03-19 10:21:59
【问题描述】:

在 Java 中,我想将一个数组(a[],固定长度)连接到一个相同长度的数组,以创建一个矩阵 M[2][length of a]。这样,我想随后将更多这些数组粘贴到矩阵上。 (堪比Matlab vertcat 函数..C=[A;B]) 这可能吗? 谢谢

【问题讨论】:

  • 显然这是可能的。但是你需要什么编程语言呢?
  • 对不起,忘了说。在 Java 中。

标签: java matrix concatenation


【解决方案1】:

是的,这是可能的。这是一个例子:

公共类主 { 公共静态无效主要(字符串 [] 参数) { int[] A = 新的 int[]{1, 2, 3}; int[] B = 新的 int[]{4, 5, 6}; int[][] M = 新的 int[2][]; M[0] = A; M[1] = B; 对于 (int i = 0; i

上面打印出来:

1 2 3 4 5 6

不过,我们可以做得更好。如果您使用的是 Java 5 或更高版本,请使用:

公共静态 int[][] vertcat(int[]... args){ 返回参数; }

然后你可以写:

int[][] M = vertcat(A,B);

它适用于任意数量的参数。

编辑
上述方法将原始数组塞入另一个数组,这意味着对结果的任何修改都会影响原始数组,这可能是不可取的。使用以下内容复制值:

public static int[][] copyMatrix(int[][] original){ if ( (original==null) || (original.length==0) || (original[0].length == 0)){ throw new IllegalArgumentException("参数必须非空且非空"); } 行=原始长度; cols = original[0].length; int[][] cpy = new int[rows][cols]; for (int row = 0; row

如果您希望vertcat 返回副本而不是原件,您可以将其重新定义为:

公共静态 int[][] vertcat(int[]... args){ 返回复制矩阵(参数); }

【讨论】:

  • 但请记住,matrix 元素仍然是原始数组。对矩阵值所做的任何更改都将反映在原始数组中,反之亦然。
【解决方案2】:

据我所知,Java 没有对矩阵和矩阵相关运算的内置支持。我要么使用二维数组,要么编写自己的 Matrix 包装类(在更简单的情况下),要么寻找一个好的 Matrix 库(例如http://jmathtools.berlios.de/)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多