# How can I create a nested loop ?

577 views (last 30 days)
Samantha Cepeda on 9 Apr 2018
Please, I'm trying to solve this problem: Create two “for loops”, one for i running from 1 to 5 by 1 and the other nested inside the first for j running from 1 to 8 by 1. Inside the nested loop, calculate the sum of the current I and j values and output the sum to the user followed by a tab.
I tried and did this:
clear, clc
i=0; j=0;
for i = 1:1:5 for j = 1:1:8
sum(i,j) = i + j;
end
end
fprintf ( '%g \t', sum)
I want to see if I did it right, I'm still confused on "sum" value. Thank you

Von Duesenberg on 9 Apr 2018
Quick comment (I suppose this is homework): you don't need to initialize your i and j (BTW it's better to avoid such variable names) before the loop. And the step size of 1 is the default in a for loop so you don't have to state it explicitly. It seems that you want to store the result in a variable called "sum"... Matlab has a built-in function with the same name, so you'd better avoid this. You should initialize an array (e.g. with the zeros function) before the loop. Hope this helps.
Samantha Cepeda on 9 Apr 2018
clear, clc
for i = 1:5
for j = 1:8
b(i,j) = i + j;
end
end
fprintf ( '%g \t', sum)
yes, it is a homework. I took C++ like two years ago and I'm using Matlab now. I'm a little bit lost and worried. Thank you for your help. I didn't quite understand when you referred to 'You should initialize an array (e.g. with the zeros function) before the loop.' What's the zeros function? I've seen people using j=0 or i=0 at the beginning, is that a case when I need to initialize a variable or not at all?

Von Duesenberg on 9 Apr 2018
Here is a possible solution ; adapt it if it doesn't quite do what you had in mind :
iMax = 5;
jMax = 8;
myArray = zeros(iMax, jMax);
for iIdx = 1:iMax
for jIdx = 1:jMax
myArray(iIdx,jIdx) = iIdx + jIdx;
end
end

#### 1 Comment

Samantha Cepeda on 10 Apr 2018
Thank you so much!