How to iterate across a specific diagonal?

2 views (last 30 days)
Hello, I am a beginner to matlab and wondering if anyone can help me with this specific problem. Here is my code
N1=2;
N2=2;
nband=1;
n=(N1*N2)*2*nband;
t=4;
HM = zeros(n);
% upper t diagonal
for ii = (N1*N2*nband):n
HM(ii,n+1-ii) = t
end
HM
% end
What I am trying to do is get a diagonal of 4's or the t variable across the the half diagonal of the matrix. Here is an image for reference. It must work for all values of N1 and N2. For example, if N1 =3, N2=2, then I would like the 8th diagonal to be iterated through the t variable. It is basically half of the n dimension. I am stuck. Any help is appreciated if possible! Thank you so much
  1 Comment
Stephen23
Stephen23 on 28 Dec 2021
Why use a loop?
fliplr(diag(4*ones(1,4),4))
ans = 8×8
0 0 0 4 0 0 0 0 0 0 4 0 0 0 0 0 0 4 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Sign in to comment.

Accepted Answer

Voss
Voss on 28 Dec 2021
N1=2;
N2=2;
nband=1;
n=(N1*N2)*2*nband;
t=4;
HM = zeros(n);
% upper t diagonal
for ii = 1:(N1*N2*nband)
HM(ii,(N1*N2*nband)+1-ii) = t;
end
HM
HM = 8×8
0 0 0 4 0 0 0 0 0 0 4 0 0 0 0 0 0 4 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

More Answers (0)

Categories

Find more on Operating on Diagonal Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!