在没有循环的情况下将 1 索引到零矩阵中

Indexing ones into a matrix of zeros without loops

我是 MATLAB 的新手,我需要一些帮助来解决这个问题。

问题是编写一个函数,创建一个由零和反向对角线上的 1 组成的 (n-n) 方阵 我试过这段代码:

function s=reverse_diag(n)
    s=zeros(n);
    i=1;j=n;
    while i<=n && j>=1
        s(i,j)=1;
        i=i+1;
        j=j-1;
    end

但我想要另一种方法来解决它,而无需使用循环或诊断和眼睛命令。

提前致谢

在没有循环的情况下实现这一点的最简单和最明显的方法是使用

s=fliplr(eye(n))

既然你说你不想使用眼睛(无论出于何种原因),你也可以使用 sub2ind-command。它看起来像这样:

s=zeros(n);
s(sub2ind(size(s),1:size(s,1),size(s,2):-1:1))=1