# Problems with double looping

2 views (last 30 days)
Armando MAROZZI on 8 Apr 2020
Edited: Andrei Bobrov on 8 Apr 2020
I am trying to implement this double loop. There is lot of material online on double looping in matlab but I don't manage to make it work.
This is my code:
debt = nan(49,1)
for j = -(6:12)
for i = 2:8
debt(j, i) = ((1 + 0.93) - (1 + j)) + 134.77 + (i - 3.3)
end
end
I would like to be able to save debt as a 49x1 vector.
What's wrong with my loop?
Thanks

Andrei Bobrov on 8 Apr 2020
Edited: Andrei Bobrov on 8 Apr 2020
Just:
ii = 2:8;
jj = -(6:12);
debt = 132.4 - jj(:) + ii(:)';
debt = debt(:);
or with for-loop:
ii = 2:8;
jj = -(6:12);
debt = nan(7);
for j = 1:7
for i = 1:7
debt(j, i) = 132.4 - jj(j) + ii(i);
end
end

Show 1 older comment
Armando MAROZZI on 8 Apr 2020
Andrei, I guess I explained myself not clearly in the question. With your codes I get a 7x7 matrix. I need to be stored as a 49x1 vector. What to put in deb(?,?) in this case? Thanks a lot
Andrei Bobrov on 8 Apr 2020
Variant:
ii = 2:8;
jj = -(6:12);
[j,i] = ndgrid(jj,ii);
debt = 132.4 - j(:) + i(:);
other
n = 7;
ii = (2:8)';
jj = -(6:12)';
debt = 132.4 - jj(kron((1:n)',ones(n,1))) + ii(kron(ones(n,1),(1:n)'));
Armando MAROZZI on 8 Apr 2020
great! Thanks a lot!