Я не знаю, хак, чтобы улучшить mscohere, но если вам нужно несколько вызовов mscohere, параллельные вычисления инструментов может помочь ускорить этот процесс. Следующий код работает 2.5x быстрее (4,7 с против 11.8s), когда я использую четыре рабочих с parfor
против регулярной for
цикла:
rng default
r = randn(16384,26);
h = fir1(30,0.2,rectwin(31));
h1 = ones(1,10)/sqrt(10);
tic
cxy_outer=cell(size(r,2),1);
parfor i =1:size(r,2)
cxy_inner=cell(size(r,2),1);
for j= 1:size(r,2)
if i<j
x=filter(h1,1,r(:,i));
y=filter(h,1,filter(h1,1,r(:,j)));
cxy_inner{j}=mscohere(x,y,hanning(1024),512,1024);
end
end
cxy_outer{i}=cxy_inner;
end
toc
Edit: Для того, чтобы сохранить результаты вывода, parfor
имеет некоторые правила о том, как переменная могут быть нарезаны, следовательно, «матрица ячеек массивов ячеек»