Create a matrix with same diagonal elements
1 view (last 30 days)
Show older comments
Grzegorz Lippe
on 27 Nov 2013
Commented: Grzegorz Lippe
on 27 Nov 2013
Hello World,
I have a vector
x = [x_1 x_2 x_3]
and would like to create a Matrix which looks like this:
X = [x_1 0 0
x_2 x_1 0
x_3 x_2 x_1]
Is there a loop-less way or a Matlab function to do this? The best thing I could come up with is:
x = 1:3 ;
N = length(x) ;
X = zeros(N) ;
for kk=1:N
X(kk:N+1:end) = x(kk) ;
end
X = tril(X)
0 Comments
Accepted Answer
Azzi Abdelmalek
on 27 Nov 2013
Edited: Azzi Abdelmalek
on 27 Nov 2013
X=[10 20 30]
n=numel(X);
out=tril(cell2mat(arrayfun(@(x) circshift(X',[x 0]),0:n-1,'un',0)))
0 Comments
More Answers (1)
See Also
Categories
Find more on Operating on Diagonal Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!