How to iterate diagonal with alternating values?

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

Réponses (1)

Matt J
Matt J le 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 commentaires

Hi! Thank you, is it possible to do this with a for loop? I have other for loops in my code that won't run with this line in it
HM = zeros(n);
for ii=1:n
HM(ii,ii) = d(ii);
end

Connectez-vous pour commenter.

Catégories

Commenté :

le 2 Jan 2022

Community Treasure Hunt

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

Start Hunting!

Translated by