Как получить запись квадратной матрицы внутри неквадратной матрицы - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь напечатать последний элемент самой большой квадратной подматрицы некоторой прямоугольной матрицы произвольной формы. У меня есть несколько подсказок для этой задачи:

Установите переменную y в качестве последней диагональной записи A. Поскольку A может быть не квадратным, вам необходимо определить, является ли последняя диагональная запись A $a_{mm}$ или $a_{nn}$.

Установите переменную B как (квадратную) матрицу, содержащую либо первые m столбцов A (если m меньше n), либо первые n строки A в противном случае.

Я пробовал делать разные комбинации m (столбцы) и n (строки), например A(1:m/n,:), A(:,1:m/n).

Я также пытался объединить две концепции выше, используя такие коды, как X(m/n:m/,1/m/n:m/n).

Я немного запутался в том, как просто напечатать последнюю квадратную запись, поскольку все эти комбинации либо приводят к ошибке (некоторые строки больше столбцов, следовательно, недопустимы, и наоборот), либо выводят последнее значение матрица, а не квадратная матрица.

Ожидаемый результат должен дать мне последнее значение в квадратной матрице неквадратной матрицы.

Например, если матрица

$[2,3,4,6;0,1,-1,-10]$

Я ожидаю, что результат будет 1, но я получаю -10 или ошибки.

1 Ответ

0 голосов
/ 28 апреля 2019

Вот несколько подходов:

A = [2,3,4,6;0,1,-1,-10];          % Define A
[m,n] = size(A);                   % Get the size of A
B = A ( 1:min(n,m), 1:min(n,m) );  % Get the sub array B
d = diag(B);                       % Obtain the diagonal of B
lastEntry = d(end);                % Obtain the last entry of the diagonal

В MATLAB также работает следующее (пропуская создание B):

A = [2,3,4,6;0,1,-1,-10];          % Define A
d = diag(A);                       % Obtain the diagonal of A
lastEntry = d(end);                % Obtain the last entry of the diagonal

Или это:

A = [2,3,4,6;0,1,-1,-10];             % Define A
[m,n] = size(A);                      % Get the size of A
lastEntry = A ( min(n,m), min(n,m) ); % Access the relevant element
...