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

1 回表示 (過去 30 日間)
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 :)

採用された回答

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by