E.g., for a square matrix:
>> X = zeros(6,6)
X =
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
>> m = size(X,1)
m =
6
>> X(1:m+1:end) = 1
X =
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
>> X(2:m+1:end) = 2
X =
1 0 0 0 0 0
2 1 0 0 0 0
0 2 1 0 0 0
0 0 2 1 0 0
0 0 0 2 1 0
0 0 0 0 2 1
>> X(m+1:m+1:end) = 3
X =
1 3 0 0 0 0
2 1 3 0 0 0
0 2 1 3 0 0
0 0 2 1 3 0
0 0 0 2 1 3
0 0 0 0 2 1
Or, using spdiags:
>> m = 6
m =
6
>> X = full(spdiags(bsxfun(@times,ones(m,1),[2 1 3]),[-1 0 1],m,m))
X =
1 3 0 0 0 0
2 1 3 0 0 0
0 2 1 3 0 0
0 0 2 1 3 0
0 0 0 2 1 3
0 0 0 0 2 1
Best Answer