Creating a diagonal matrix

3 Ansichten (letzte 30 Tage)
Gratitude Kim
Gratitude Kim am 5 Aug. 2017
Bearbeitet: Andrei Bobrov am 6 Aug. 2017
I will like to create such diagonal matrix. A=[1 1 1 0 0 0; 0 1 1 1 0 0; 0 0 1 1 1 0; 0 0 0 1 1 1] Appreciate your kind assitance.

Antworten (4)

Matt J
Matt J am 5 Aug. 2017
A=conv2(eye(4),[1,1,1])

John D'Errico
John D'Errico am 5 Aug. 2017
Bearbeitet: John D'Errico am 5 Aug. 2017
That is not a diagonal matrix, not by the common definition of the term. It has non-zero diagonals, but that is as far as I might go.
Still trivial though.
triu(tril(ones(4,6),2))
ans =
1 1 1 0 0 0
0 1 1 1 0 0
0 0 1 1 1 0
0 0 0 1 1 1
Or...
toeplitz([1 0 0 0]',[1 1 1 0 0 0])
ans =
1 1 1 0 0 0
0 1 1 1 0 0
0 0 1 1 1 0
0 0 0 1 1 1

Andrei Bobrov
Andrei Bobrov am 5 Aug. 2017
Bearbeitet: Andrei Bobrov am 6 Aug. 2017
full(spdiags(ones(4,3),0:2,4,6))
or
t = true(4,6);
out = tril(t,2) & triu(t)
or
a = triu(ones(4,3));
out = [a,rot90(a,2)]

Matt J
Matt J am 5 Aug. 2017
Bearbeitet: Matt J am 5 Aug. 2017
You could also use interpMatrix ( Download ) in a somewhat weird way,
A=full( interpMatrix( [1,1,1] , 1,4,1,'allcontrib') )

Kategorien

Mehr zu Operating on Diagonal Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by