Java 如何使用ArrayList的值更改矩阵的索引?

Java 如何使用ArrayList的值更改矩阵的索引?,java,arrays,arraylist,indexing,Java,Arrays,Arraylist,Indexing,我正在java代码(Eclipse)中从matlab导入一些值。 我想用java中的列表更改矩阵的索引。我该怎么做 ''' 我想用这些值创建一个矩阵,索引等于Origin和Dest int D = 3; double[][] c = new double[D][D]; for( int i= 0; i < D; i++){ for (int j = 0; j < D; j++) {

我正在java代码(Eclipse)中从matlab导入一些值。 我想用java中的列表更改矩阵的索引。我该怎么做

'''

我想用这些值创建一个矩阵,索引等于Origin和Dest

         int D = 3;
         double[][] c = new double[D][D];
         for( int i= 0; i < D; i++){
              for (int j = 0; j < D; j++) {
                 c[Dest.get(i)-1][Dest.get(j)-1]
                    =roots[Origin.get(i)-1][Origin.get(j)-1];
              }
         }

         System.out.println(Arrays.deepToString(c));
例如:

  double[][] c = new double[][];
  for( int i:Origin){
    for(int j:Dest){
     c[i][j]=roots[i][j];
     }
      }

我该怎么做呢?

我不太确定我是否理解。但是Java中的矩阵是基于0的。所以需要从matlab矩阵索引中减去1

试试这个。我不确定您想如何应用Origin和Dest

         int D = 3;
         double[][] c = new double[D][D];
         for( int i= 0; i < D; i++){
              for (int j = 0; j < D; j++) {
                 c[Dest.get(i)-1][Dest.get(j)-1]
                    =roots[Origin.get(i)-1][Origin.get(j)-1];
              }
         }

         System.out.println(Arrays.deepToString(c));
intd=3;
double[]c=新的double[D][D];
对于(int i=0;i
这是我正在做的一个示例,您可以自己应用该技术。 看看这是否符合你的要求。它使用了你帖子中的样本数据,因为我没有MatLab


        int D = 3;
        double roots[][] = { { 0.5, 0.4791428571428572, 0.0 },
                {0.0,Double.POSITIVE_INFINITY,Double.POSITIVE_INFINITY},
                { 0.4791428571428572, 0.0, Double.POSITIVE_INFINITY, } };

        System.out.println("Before copying");
        for (double[] a : roots) {
            System.out.println(Arrays.toString(a));
        }

        double[][] c = new double[D][D];
        for (int i = 0; i < D; i++) {
            for (int j = 0; j < D; j++) {
                c[Dest.get(i)-1][Dest.get(j)-1] = roots[Origin.get(i)-1] 
                          [Origin.get(j)-1]; 
            }
        }

        System.out.println("\nAfter copying");
        for (double[] a : c) {
            System.out.println(Arrays.toString(a));
        }



int D=3;
双根[][]={{0.5,0.4791428571428572,0.0},
{0.0,Double.正无穷大,Double.正无穷大},
{0.4791428571428572,0.0,双正无穷大,};
System.out.println(“复制前”);
for(双[]a:根){
System.out.println(Arrays.toString(a));
}
double[]c=新的double[D][D];
对于(int i=0;i
谢谢您的帮助,但它不起作用。我很抱歉。我是一个初学者。通过你的代码,我得到了以下信息:[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,0.0,0.0,0.0],[0.5,0.4791428571428572,0.0],[0.0,无穷大,无穷大],[0.4791428571428572,0.0],我将用这些值创建一个新的矩阵,但是我想使用Origin和Dest作为索引。

        int D = 3;
        double roots[][] = { { 0.5, 0.4791428571428572, 0.0 },
                {0.0,Double.POSITIVE_INFINITY,Double.POSITIVE_INFINITY},
                { 0.4791428571428572, 0.0, Double.POSITIVE_INFINITY, } };

        System.out.println("Before copying");
        for (double[] a : roots) {
            System.out.println(Arrays.toString(a));
        }

        double[][] c = new double[D][D];
        for (int i = 0; i < D; i++) {
            for (int j = 0; j < D; j++) {
                c[Dest.get(i)-1][Dest.get(j)-1] = roots[Origin.get(i)-1] 
                          [Origin.get(j)-1]; 
            }
        }

        System.out.println("\nAfter copying");
        for (double[] a : c) {
            System.out.println(Arrays.toString(a));
        }