Как превратить матрицу 2x3 в матрицу 3x3

Извините, если это глупый вопрос, но я просто не могу найти ответ, который мне нужен. У меня есть следующая матрица: -

 A  |6 6 0|
    |9 0 0|

Каждый столбец представляет координаты на сетке. Теперь, чтобы найти инверсию «А», мне нужно создать из нее квадратную матрицу 3x3, для этого я добавляю 001 в качестве 3-й строки...

 B  |6 6 0|
    |9 0 0|
    |0 0 1|

Я делаю это просто потому, что это то, что я видел в онлайн-примерах.

Мой вопрос: как в этой ситуации можно вычислить/сложить 3-ю строку матрицы 2x3?


person user2292173    schedule 17.05.2013    source источник
comment
Какой язык/среду вы используете? Это должно быть так же просто, как создать вектор-строку, заполненный нулями, такой же длины, как матрица, установить последнее число в векторе-строке равным единице, а затем добавить его к матрице...   -  person Simon M    schedule 17.05.2013
comment
Я просто использую несколько простых 2D-преобразований, кроме того, я не уверен, что вы подразумеваете под средой. Хорошо, я всегда устанавливал бы последнее число равным 1?   -  person user2292173    schedule 17.05.2013
comment
Я спросил, какие инструменты вы используете? (matlab, octave и т. д.) И да, если вы всегда просто добавляете одну строку в конец своей матрицы, тогда последнее число в строке всегда должно быть 1, если вы на самом деле добавляете последнюю строку единичная матрица 3x3. Не могли бы вы дать ссылку на пример, которому вы следуете?   -  person Simon M    schedule 17.05.2013
comment
Это мой собственный пример, но скажем, я начертил треугольник на график с координатами выше (A). Затем я умножил матрицу точек (A) на матрицу преобразования (1 0/0 -1), чтобы получить отражение в ось x, чтобы отменить эту операцию, мне нужно найти обратную. Отсюда вопрос.   -  person user2292173    schedule 17.05.2013


Ответы (2)


Невозможно взять обратную матрицу, которая не возведена в квадрат. Я предполагаю, что хотел бы просто расширить матрицу, чтобы сделать i в квадрате, причина, по которой вы используете [0 0 1], состоит в том, чтобы сделать матрицу последовательный..

На самом деле ваша матрица представляет собой два уравнения с тремя переменными.

A:

    6*x_1 + 6*x_2 + 0*x_3 = 0
    9*x_1 + 0*x_2 + 0*x_3 = 0

это не соответствует, но добавив последнюю строку, которую вы получаете

B:

    6*x_1 + 6*x_2 + 0*x_3 = 0
    9*x_1 + 0*x_2 + 0*x_3 = 0
    0*x_1 + 0*x_2 + 1*x_3 = 0

эта матрица существует в ступенчатой ​​форме

[1 0 0]
[0 1 0]
[0 0 1]

поэтому, добавляя последнюю строку, вы не меняете матрицу

вы бы правильно получили тот же результат, просто уменьшив его до

[6 6]
[9 0]
person Laplace    schedule 17.05.2013

Вот простой способ сделать это:

s = size(A);
B = eye(max(s));
B(1:s(1),1:s(2)) = A
person Dennis Jaheruddin    schedule 17.05.2013