不使用 MATLAB 内置函数创建对角矩阵

Create diagonal matrix without using MATLAB built-in functions

我知道这个问题的答案如下所示。

function a = reverse_diag(n)
    b = zeros(n);
    b(1:n+1:end) = 1;
    a(1:n, n:-1:1) = b(1:n, 1:n);
end

但为什么它看起来像那样?这是什么意思?

b(1:n+1:end) = 1;

我好像记得最近在 MATLAB 答案中看到过类似的东西,所以我会简短一点。

MATLAB 数组可以通过 2 种相关方式进行索引:

  1. 喜欢A(x,y)使用矩阵中的实际坐标。

  2. 就像A(index)一样,不管矩阵A实际有多少维。这称为线性索引,将逐列遍历矩阵。所以对于 10x10 矩阵,A(11) 实际上是 A(2,1).

继续阅读 ind2sub and sub2ind 以了解它们的工作原理。您现在应该能够弄清楚为什么该行有效。