首页 > 解决方案 > 如何在非方阵内获取方阵的条目

问题描述

我正在尝试打印一些任意形状的矩形矩阵的最大方形子矩阵的最后一个元素。对于这项任务,我有几个提示:

将变量设置y为 的最后一个对角线条目A。由于A可能不是正方形,因此您需要确定最后一个对角线条目A$a_{mm}$还是$a_{nn}$

将变量设置为包含(如果小于)B的前 m 列或其他情况的前行的(方形)矩阵。AmnnA

我尝试过对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, 或错误。

标签: matrixoctavediagonalmatrix-indexingsubmatrix

解决方案


这里有几种方法:

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

推荐阅读