Create a matrix with same diagonal elements

4 ビュー (過去 30 日間)
Grzegorz Lippe
Grzegorz Lippe 2013 年 11 月 27 日
コメント済み: Grzegorz Lippe 2013 年 11 月 27 日
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 日
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 日
out = tril(toeplitz(x));
  1 件のコメント
Grzegorz Lippe
Grzegorz Lippe 2013 年 11 月 27 日
GREAT! :)

サインインしてコメントする。

カテゴリ

Help Center および 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