Filter löschen
Filter löschen

get a diagonal line in matrix

4 Ansichten (letzte 30 Tage)
dao
dao am 21 Aug. 2017
Kommentiert: dao am 22 Aug. 2017
Hi, please help me get a diagonal line in matlab. Example, I have a matrix: a = [1 2 3; 4 5 6; 7 8 9] I want to get vector b =[3 5 7] which is a diagonal line of matrix a. This is my code but it doesn't work
a=[1 2 3; 4 5 6; 7 8 9];
b = zeros(1,3);
for i=1:3
for i=1:3
b = a(i,j);
end
end

Akzeptierte Antwort

Jan
Jan am 21 Aug. 2017
Bearbeitet: Jan am 21 Aug. 2017
Or:
a = [1 2 3; 4 5 6; 7 8 9];
s = size(a);
index = (numel(a) - s(1) + 1):(1 - s(1)):s(2);
b = a(index)
[EDITED, works with non square matrices now]
  3 Kommentare
Jan
Jan am 22 Aug. 2017
If you really want a loop:
b = zeros(1,3);
for i = 1:3
b(i) = a(i, 4 - i);
end
dao
dao am 22 Aug. 2017
Thank you for your answer, it is neat. in my case, the column and row are equal. How about they are different. Example, I have a matrix 3x4 ? Do I need to use two loop ?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

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