parfor EEG_temp=10:100;
EEG_temp_filter=filter(ones(1,EEG_temp),1,EEG_amp_vals(eeg_temp_subset,:),[],2);
EEG_vertices=eeg_temp_subset((max(EEG_temp_filter,[],2)==EEG_temp)>0);
connected_EEG_vertices=EEG_vertices((sum(surface.VertConn(EEG_vertices,EEG_vertices))>=2)>0);
if length(connected_EEG_vertices)<5000 && length(connected_EEG_vertices)>500
for fMRI_index=1:length(fMRI_thresholds);
signal_union=union(connected_EEG_vertices,unique(fMRI_Vertices(fMRI_index,:)));
signal_intersection=intersect(connected_EEG_vertices,unique(fMRI_Vertices(fMRI_index,:)));
Overlap=length(signal_intersection)/length(signal_union)*100;
highest_overlap=max(highest_overlap,Overlap)-Overlap;
if highest_overlap==0;
EEG_amp_value=[EEG_amp_value,EEG_amp];
EEG_temp_value=[EEG_temp_value,EEG_temp];
fMRI_amp_value=[fMRI_amp_value,fMRI_thresholds(fMRI_index)/100];
highest_overlap=max(highest_overlap,Overlap);
end
end
end % end of if
% eeg_temp_subset=EEG_vertices;
end %end of EEG_temp
此代码试图最大化三个变量, EEG_temp
, EEG_amp
和fMRI_amp
以确定哪个组合产生最高的重叠。 由于是,如果组合中没有几十万我想PARFOR将有助于加快分析,因为我有一个可以投入16个内核的任务集群10秒。
我遇到的问题是与highest_overlap
变量。 如果我把它定义了PARFOR循环之外,MATLAB甚至不会让我开始运行的分析,因为它是在PARFOR循环外部定义,但是,如果我没有当它到达的PARFOR循环MATLAB崩溃之外定义它PARFOR循环,因为它没有定义。
任何人都可以给您一个建议来解决我的问题吗? 我认为IF语句可能有一些用它做,我不得不定义highest_overlap
事情是这样的地方是一个差,因为如果我只是做了,如果highest_overlap==overlap
,它告诉我,我被滥用highest_overlap
变量。 因此,我将采取任何解决方案,以获得此代码工作,你可能有。 它是否是一个变化到使用最高重叠的方式或整个代码结构,只要它运行。