使用しないでください。遅いです。
ベクトルが cell 配列に格納されている場合は、次を使用できますcellfun
。
y = [ ... ];
xs = { [ ... ], [ ... ], [ ... ] };
res = cellfun(@(x) xcorr(x,y), xs, 'UniformOutput', false);
res
は、相関を含む cell 配列になりました。
ループを解釈する必要がないため、これは for ループ (未テスト) よりも高速です。
を使用して、行列をベクトルのセル配列に変換できますmat2cell
。
アップデート
テスト済み:
xm = rand(n);
xc = mat2cell(xm, ones(n,1), n);
y = rand([n 1]);
tic
for i = 1:n
xcorr(y,xm(i,:));
end
toc
tic
cellfun(@(x) xcorr(x,y), xc, 'UniformOutput', false);
toc
為にn = 5000
Elapsed time is 5.713080 seconds.
Elapsed time is 7.003739 seconds.
為にn = 10000
Elapsed time is 15.283524 seconds.
Elapsed time is 18.009520 seconds.
したがって、実際にはさらに遅くなります。