我想创建一个大小n x n的正方形矩阵,其中对角线元素和左对角线都等于1其余元素等于0。
例如,如果矩阵为5 x 5,这将是预期结果:

1 0 0 0 0
1 1 0 0 0
0 1 1 0 0
0 0 1 1 0
0 0 0 1 1

我怎么能在MATLAB中做到这一点?

最佳答案

使用tril函数很简单:

tril(ones(n),0) - tril(ones(n),-2)

如果你想要一个更粗的1s行,只需调整-2
n = 10;
m = 4;
tril(ones(n),0) - tril(ones(n),-m)

如果您喜欢使用excaza建议的diag,请尝试
diag(ones(n,1)) + diag(ones(n-1,1),-1)

但你不能这样控制条纹的“厚度”但是,对于2的厚度,它可能表现得更好不过你得测试一下。

10-05 22:32