How can I vectorize this piece of code for loading cross-validation from file ?

1 view (last 30 days)
So I am supposed to load the cross-validation folds from a file (10 iterations, each is 10-folds, so a total of 100, arranged sequentially in a 1-dimensional array). I have attached the file below. The problem is my code uses for loops intensively and I would like to vectorise it, here is my code:
input_filename = 'cv_yeast.mat';
cv = load(input_filename);
nfolds= 10;
niters = 10;
for loop =1:niters
for i = 1 : nfolds
teIdx = cv.cv{((loop-1)*nfolds + i)};
trIdx = [];
for j = 1 : nfolds
if j ~= i
trIdx = [trIdx; cv.cv{(loop - 1)*nfolds + j}];
end
end
% Processing goes here
end
end
For some reasons I don't want to vectorise the 2 outer for loops, just the inner one. Can anyone help me, thank you very much :)

Accepted Answer

Walter Roberson
Walter Roberson on 19 Nov 2016
Possibly
jv = setdiff(1 : nfolds, i);
trIdx = vertcat( cv.cv{(loop - 1)*nfolds + jv} );

More Answers (0)

Categories

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

Community Treasure Hunt

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

Start Hunting!