Когда вы используете форму
[sos,g] = zp2sos(z,p,k);
g
, это то же самое, что и k
.
Например,
> [sos, g] = zp2sos([-1 0.5 0.6], [-0.5 0.1+0.25j 0.1-0.25j 0.9], 3);
> g
g = 3
Ваша проблема в том, что вы рассматриваете экземпляр Matrix
как массив; это не. Он имеет массив. Если вы хотите манипулировать внутренним массивом экземпляра newArray
(я настоятельно рекомендую переименовать эту переменную в newMatrix
), то вы можете сделать это, открыв newArray.array
.
Если я вас правильно понял, вот что вы хотите:
public class Matrix {
private final int[][] array;
private final int size1;
private final int size2;
Matrix(int size1, int size2) {
this.size1 = size1;
this.size2 = size2;
this.array = new int[size1][size2];
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
for (int[] arr: array)
builder.append(Arrays.toString(arr) + "\n");
return "Matrix{" +
"array=\n" + builder +
'}';
}
Matrix(int[][] color) {
this.size1 = color.length;
this.size2 = color[0].length;
this.array = new int[size1][size2];
for (int row = 0; row < size1; row++) {
for (int column = 0; column < size2; column++) {
this.array[row][column] = color[row][column];
}
}
}
public Matrix flipVertically() {
int start = 0, end = size1 - 1;
while (start < end) {
int[] tmp = array[start];
array[start] = array[end];
array[end] = tmp;
start++;
end--;
}
return this;
}
public static void main(String[] args) {
Matrix matrix = new Matrix(new int[][]{{1,2,3}, {4,5,6}, {7,8,9}});
System.out.println(matrix.flipVertically());
matrix = new Matrix(new int[][]{{1,2,3}, {4,5,6}, {7,8,9}, {10,11,12}});
System.out.println(matrix.flipVertically());
matrix = new Matrix(new int[][]{{1}});
System.out.println(matrix.flipVertically());
matrix = new Matrix(new int[][]{{1},{2},{3}});
System.out.println(matrix.flipVertically());
}
Вывод:
Matrix{array=
[7, 8, 9]
[4, 5, 6]
[1, 2, 3]
}
Matrix{array=
[10, 11, 12]
[7, 8, 9]
[4, 5, 6]
[1, 2, 3]
}
Matrix{array=
[1]
}
Matrix{array=
[3]
[2]
[1]
}
Чтобы ответить на ваши вопросы:
newArray[row][column]=array[size1][size2];
не то, как вы можете скопировать массив в java, хотя я не думаю, что вам вообще нужно его копировать - посмотрите мою реализацию. В любом случае, если вы хотите скопировать ваш массив, обратитесь к этой копии двухмерного массива в java Matrix matrix = new Matrix(new int[][]{{1,2,3}, {4,5,6},
{7,8,9}});
. В моем коде я просто возвращаю this
ведьма - ссылка на себя. П.С. Предложения по улучшению вашего кода: добавьте геттеры и сеттеры, сделайте ваш конструктор общедоступным, если нет причин, оставляйте его friendly
, проверяйте угловые случаи, когда пустой конструктор передается в конструктор ....