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
, чтобы определить, какое сочетание обеспечивает самое высокое перекрытие. Поскольку существует 10 с, если не сотни тысяч комбинаций, я думал, что parfor поможет ускорить анализ, поскольку у меня есть кластер, который может выделить 16 ядер для этой задачи.parfor цикл не будет работать, если заявление в MATLAB
Проблема, которая возникает у меня с переменной highest_overlap
. Если я определяю его за пределами цикла parfor, MATLAB даже не позволит мне запустить анализ, потому что он определен вне цикла parfor, однако, если я не определяю его вне цикла parfor, MATLAB падает, когда он попадает в parfor, потому что он не определен.
Может ли кто-нибудь предложить предложение исправить проблему, которую у меня есть? Я думаю, что оператор IF может иметь какое-то отношение к этому, я должен был определить highest_overlap
, как он является дифференциальным, потому что, если бы я только что сделал, если highest_overlap==overlap
, он сказал мне, что я неправильно использовал переменную highest_overlap
. Поэтому я возьму любые решения, чтобы заставить этот код работать, который у вас может быть. Является ли это изменением способа использования максимального перекрытия или всей структуры кода до тех пор, пока оно выполняется.
Привет и добро пожаловать в SO! Я только что отредактировал ваш вопрос, чтобы улучшить форматирование - сделайте это самостоятельно в будущих вопросах. Разумный текст облегчает ответ. :-) –
У меня нет решения для вашей проблемы, но я бы настоятельно рекомендовал не использовать поиск в сетке (с или без 'parfor'), а функцией оптимизации. Посмотрите на 'fminsearch' и друзей. –
Это невозможно, потому что у вас есть зависимость между итерациями. Вторая итерация parfor требует, чтобы первый оценил 'high_overlap'. Где вы меняете «EEG_amp» в своем коде, я действительно не понимаю, как это работает. – Daniel