Create a matrix with same diagonal elements

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)

 採用された回答

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 11 月 27 日
編集済み: Azzi Abdelmalek 2013 年 11 月 27 日

0 投票

X=[10 20 30]
n=numel(X);
out=tril(cell2mat(arrayfun(@(x) circshift(X',[x 0]),0:n-1,'un',0)))

その他の回答 (1 件)

Andrei Bobrov
Andrei Bobrov 2013 年 11 月 27 日

0 投票

out = tril(toeplitz(x));

カテゴリ

ヘルプ センター および File ExchangeOperating on Diagonal Matrices についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by