Varying number of nested loops

I have the results of simulation in table format. Were the variables are the columns of the table. For example ,
Here I need to plot Histogram for Result for all the combinations of corner, voltage and temperature (two unique values for each hence eight combinations). In this case I can do it by three nested for loops . However the number of variables will depend upon the input data. That is , in another simulation I may have more columns added up. For example, one more column "Resistance" added up with two unique values (50,100). Now I have 2^4 = 16 combinations available. Hence four nested loops .
Is there any way to read these number of columns and generate that many nested loops? Or is there any other better way to do this.

 Accepted Answer

% small example, last column is result, first columns define combinations
DATA = [1 2 4 ; 1 3 15 ; 1 2 6 ; 1 2 8 ; 1 3 25]
[UniqueCombis, ~, IDX] = unique(DATA(:,1:size(DATA,2)-1), 'rows')
% now you can use IDX to pick from the last column of DATA
for k = 1:size(UniqueCombis,1)
tmpResult = DATA(IDX==k,end) ;
disp(sum(tmpResult))
end
% count how many times each combi is present in DATA
N = accumarray(IDX,1)
disp([UniqueCombis N(:)])
% etcetera ...

1 Comment

Hi. Could you please give more clarity on what is happening in this line [UniqueCombis, ~, IDX] = unique(DATA(:,1:size(DATA,2)-1), 'rows')
Thank you.

Sign in to comment.

More Answers (0)

Categories

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

Products

Asked:

on 22 Dec 2017

Commented:

on 26 Dec 2017

Community Treasure Hunt

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

Start Hunting!