How to automatically introduce a nested layer of for-loop?

15 views (last 30 days)
Given a set of x-values , I want to create a script that generates a product of n numbers.
For example, if I want to generate products of 2 numbers, i.e. and so on, the script would be:
for i_1=1:3
for i_2=1:3
Product=X(i_1)*X(i_2)
end
end
There will be 2 for-loops, one nested in another.
If I want to generate products of 3 numbers, i.e. and so on, the script would be:
for i_1=1:3
for i_2=1:3
for i_3=1:3
Product=X(i_1)*X(i_2)*X(i_3)
end
end
end
There will be 3 for-loops, i.e. 2 nested loops in an external loop.
Is there a way to automate this, like a recursion, so when n increases, it will automatically introduce a nested for-loop in the original script? The concept is like this:
n=n
for i_1=1:3
for i_2=1:3
for i_3=1:3
.
.
.
for i_n=1:3
Product=X(i_1)*X(i_2)*X(i_3)*...*X(i_n)
end
.
.
.
end
end
end
  2 Comments
Yasasvi Harish Kumar
Yasasvi Harish Kumar on 26 Feb 2019
Edited: Yasasvi Harish Kumar on 26 Feb 2019
The Product variable gets over written in each iteration. I dont see why you would have a loop for it.
If you still need to write multiple loops, try recursive function as a solution.
Wh Khu
Wh Khu on 26 Feb 2019
Edited: Wh Khu on 26 Feb 2019
I know my Product will get overwritten for every loop, so I'm gonna store it into a cell for each iteration, it's just that I don't want to include that unrelated intricacy in my example above because that's not the point. I want to simplify the bigger picture, which is to add nested for-loops automatically based on the number n I assign.

Sign in to comment.

Accepted Answer

Shunichi Kusano
Shunichi Kusano on 26 Feb 2019
Hi, This is a possibility:
N = 4; % the loop number
X = rand(1,3); % simulated X
products = ones(ones(1,N)*3);
reshape_arr = [3 ones(1,N-1)];
repmat_arr = [1 ones(1,N-1)*3];
for i = 1:N
temp = repmat(reshape(X, circshift(reshape_arr, i-1)), circshift(repmat_arr,i-1));
products = products .* temp;
end
hope this helps.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!