Hi all. I have some values from U(1)...to...U(500) , and I need help to create this matrix:

 채택된 답변

Stephen23
Stephen23 2016년 5월 21일
편집: Stephen23 2016년 5월 21일

0 개 추천

One fast and easy way is to use toeplitz, it only needs one line of code:
>> U = 1:9;
>> toeplitz(U,[U(1),zeros(1,numel(U)-1)])
ans =
1 0 0 0 0 0 0 0 0
2 1 0 0 0 0 0 0 0
3 2 1 0 0 0 0 0 0
4 3 2 1 0 0 0 0 0
5 4 3 2 1 0 0 0 0
6 5 4 3 2 1 0 0 0
7 6 5 4 3 2 1 0 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1
or
tril(toeplitz(U))

추가 답변 (2개)

Azzi Abdelmalek
Azzi Abdelmalek 2016년 5월 21일

0 개 추천

u=1:10
n=numel(u)
v=repmat(u',1,n)
w=cell2mat(arrayfun(@(x) circshift(v(:,x),[x-1 0]),1:n,'un',0) )
out=tril(w)

카테고리

도움말 센터File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

질문:

2016년 5월 21일

편집:

2016년 5월 21일

Community Treasure Hunt

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

Start Hunting!

Translated by