How to automatically introduce a nested layer of for-loop?
조회 수: 10 (최근 30일)
이전 댓글 표시
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
Yasasvi Harish Kumar
2019년 2월 26일
편집: Yasasvi Harish Kumar
2019년 2월 26일
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.
채택된 답변
Shunichi Kusano
2019년 2월 26일
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.
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!