是否有任何黑客如何加强MATLAB功能mscohere?我正在计算26个大向量中每2个之间的一致性。需要很多时间。
我正在为每对向量使用这段代码。
coherenceMatrix{i,j} = mscohere(double(data.ch(indexes(i)).data),double(data.ch(indexes(j)).data),WINDOW,NOVERLAP) ;
答案 0 :(得分:1)
我不知道改进mscohere的黑客攻击,但如果你需要多次调用mscohere,并行计算工具箱可以帮助加快这个过程。当我使用parfor
与常规for
循环的四名工作人员时,以下代码的运行速度提高了2.5倍(4.7秒对11.8秒):
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
编辑:为了保存输出结果,parfor
对变量如何切片有一些规则 - 因此“单元阵列的单元阵列”