0
私はファイルからクロスバリデーションの折りたたみを読み込むことになっています(10反復、それぞれ10回、合計100で、1次元配列に順番に格納されます)。ファイルはhttps://www.mediafire.com/?bvs0n0eu7gs0if4です。問題は、私のコードは、集中的にループに使用していると私はそれをvectoriseしたいと思い、ここに私のコードです:私は、forループ2の外、ちょうど内側の1をvectoriseしたくないいくつかの理由からファイルからクロスバリデーションを読み込むために、このコードをどのようにベクトル化できますか?
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
。誰もがどうもありがとうございました:)
1は、外側のループをベクトル化することはできますか?特殊な外部ループレジスタはありますか? – Holmz
私が取り組んでいる実際のコードは%処理のところにあるので、簡単にベクトル化できないと思われます。 –
通常、簡単にベクター化するにはSoAレイアウトが必要です。概念的に。あなたはそれに何度も何度も取り組んでいれば、そのためのベクターを作ることができます。それ以外の場合は、ギャザーと散漫が必要です。だから基本的に1つだけのベクトルレジスタがあり、それは理想的には均一な線形データ上で動作するはずです...これはほぼ常に内側のループです。 trIDX []がそれをしようとしているようです。と@ rahnema1は、vertcatと。 – Holmz