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

时间:2016-11-15 05:26:26

标签: matlab diagonal

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

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;

1 个答案:

答案 0 :(得分:3)

我似乎记得最近在MATLAB答案中看到了与此相似的内容,因此我将简短。

MATLAB数组可以通过两种相关方式编制索引:

  1. 与使用矩阵中实际坐标的A(x,y)类似。

  2. A(index)类似,无论矩阵A实际拥有多少维度。这称为线性索引,将逐列遍历矩阵。因此,对于10x10矩阵,A(11)实际上是A(2,1)

  3. 阅读ind2subsub2ind,了解这些是如何运作的。您现在应该能够弄清楚该行的工作原理。

相关问题