How to iterate diagonal with alternating values?

6 views (last 30 days)
Hi everyone! I have a question about iterating diagonally across a matrix I create. Here is the code I have so far. I am a beginner at Matlab, so I am trying to do this with a for loop, but getting stuck! If anyone can please help me do this it would be greatly appreciated! I am trying to get the values in green to be set to the value of e_p, thank you so much !!!
N1=2;
N2=4;
nband=1;
n=(N1*N2)*2*nband;
e=1;
e_p=2;
e_pp=3;
t=4;
tp=5;
HM = zeros(n);
for ii=2:n
HM(ii,ii) = e;
end

Answers (1)

Matt J
Matt J on 2 Jan 2022
One way,
d=ones(1,n);
d(1)=0;
d([2:4:end, 3:4:end])=e_p;
HM=diag(d);
  2 Comments
Matt J
Matt J on 2 Jan 2022
HM = zeros(n);
for ii=1:n
HM(ii,ii) = d(ii);
end

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by