14 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

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.

Sign in to comment.

Sign in to answer this question.

Opportunities for recent engineering grads.

Apply Today
## 2 Comments

## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/446989-how-to-automatically-introduce-a-nested-layer-of-for-loop#comment_675118

⋮## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/446989-how-to-automatically-introduce-a-nested-layer-of-for-loop#comment_675118

## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/446989-how-to-automatically-introduce-a-nested-layer-of-for-loop#comment_675145

⋮## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/446989-how-to-automatically-introduce-a-nested-layer-of-for-loop#comment_675145

Sign in to comment.