Toeplitz矩阵初始化

时间:2016-04-12 20:13:22

标签: java toeplitz

我正在尝试在java中初始化Toeplitz矩阵。我希望它有这种形式
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   

输出

RetryPolicy retryPolicy = new RetryPolicy()
  .retryOn(ConnectException.class);
  .withBackoff(1, 30, TimeUnit.SECONDS);

Failsafe.with(retryPolicy).run(() -> attemptReconnection());

1 个答案:

答案 0 :(得分: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];
    }
}