How to iterate across a specific diagonal?

2 次查看(过去 30 天)
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 个评论
Stephen23
Stephen23 2021-12-28
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

请先登录,再进行评论。

采纳的回答

Voss
Voss 2021-12-28
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

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Operating on Diagonal Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by