Azzera filtri
Azzera filtri

How to create this specified matrix?

1 visualizzazione (ultimi 30 giorni)
jack star
jack star il 21 Mag 2016
Modificato: Stephen23 il 21 Mag 2016
Hi all. I have some values from U(1)...to...U(500) , and I need help to create this matrix:

Risposta accettata

Stephen23
Stephen23 il 21 Mag 2016
Modificato: Stephen23 il 21 Mag 2016
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))

Più risposte (2)

Azzi Abdelmalek
Azzi Abdelmalek il 21 Mag 2016
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)

Andrei Bobrov
Andrei Bobrov il 21 Mag 2016
tril(toeplitz(u))

Categorie

Scopri di più su Multidimensional Arrays in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by