【问题标题】:Toeplitz matrix initializationToeplitz 矩阵初始化
【发布时间】:2016-04-12 20:13:22
【问题描述】:

我正在尝试在 java 中初始化一个 Toeplitz 矩阵。我希望它有这种形式
6 -4 1 0 0 ... 0 -4 6 -4 1 0 ... 0 1 -4 6 -4 1 ...0 ................ 0 ... 1 -4 6 -4 1 0 ... ...1 -4 6-4 0 .. ... 0 1 -4 6

我意识到问题出在 if(j>i) 的范围内 data[i-j-1] 。我试图改变它,但我得到了IndexOutOfBounds 错误。这是我到目前为止写的代码

    int a1[][] = new int[size][size];


    int data[] = new int[size];

    data[0] = 6;
    data[1] = -4;
    data[2] = 1;

    for(int i=3; i<size; i++){
        data[i] = 0;
    }

    /* Creating the A1 matrix */
    for(int i=0; i<size; i++)
    {
        for(int j=0; j<size; j++)
        {
            if(j>i){
                a1[i][j] = data[j-i-1];

            }else if(j==i){
                a1[i][j] = data[0];

            }else{
                a1[i][j] = data[i-j-1];
            }


        }
    }

输出是

    The Matrix is : 
6   6   -4  1   0   0   0   0   0   0   
6   6   6   -4  1   0   0   0   0   0   
-4  6   6   6   -4  1   0   0   0   0   
1   -4  6   6   6   -4  1   0   0   0   
0   1   -4  6   6   6   -4  1   0   0   
0   0   1   -4  6   6   6   -4  1   0   
0   0   0   1   -4  6   6   6   -4  1   
0   0   0   0   1   -4  6   6   6   -4  
0   0   0   0   0   1   -4  6   6   6   
0   0   0   0   0   0   1   -4  6   6   

【问题讨论】:

    标签: java toeplitz


    【解决方案1】:

    问题是如果i = j+1j = i+1a1 被分配a1[i][j] = data[0]。这是一个错误,你应该删除 1:

    for(int j=0; j<size; j++) {
        if(j>i){
            a1[i][j] = data[j-i];
        }else if(j==i){
            a1[i][j] = data[0];
        }else{
            a1[i][j] = data[i-j];
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多