Я написал небольшой фрагмент кода, который извлекает данные из нескольких массивов, созданных фрагментом кода, который мне прислал мой профессор. Цель состоит в том, чтобы взять параметр порядка связи bR в рабочем пространстве в паре с местоположением частицы. Отсюда я делаю то же самое с каждой другой частицей и умножаю порядки связи вместе, вычисляя расстояние между двумя частицами, местоположение берется из центрального массива. Второй вложенный для l oop усредняет выходной сигнал от всех пар частиц с одинаковым расстоянием между частицами, что дает мне функцию пространственной корреляции для конкретного решения. Проблема, с которой я сталкиваюсь, заключается в том, что у меня должно быть что-то вроде:
п (п-1) / 2 (n - количество частиц),
общее количество различных пар частиц (порядок не имеет значения), но я получаю только n. Это приводит к тому, что я получаю только один общий результат, когда у меня должно быть несколько тысяч, которые я могу построить. Мой предыдущий опыт кодирования был на c / c ++, и меня беспокоит, что я написал что-то в стиле c, которое не переводится на Matlab. Если кто-нибудь может дать мне проверку работоспособности или дать какой-нибудь совет по написанию кода, я был бы признателен.
введите описание изображения здесь
load('Psi6Data'); %%pulls data from bond order six movie
neighbor_distance = 0;
desire = 0;
sz = size(centers,1)*(size(centers,1)-1)/2;
array = double.empty;
array2 = double.empty;
for j = 1:size(centers,1) %%finds Psi6_a * Psi6_b as well as the distance between the two particles
for p = (j+1):size(centers,1)
neighbor_distance = sqrt((centers(p,1)-centers(j,1))^2/(centers(p,2)-centers(j,2))^2);
desire = bR(1,j) * bR(1,p);
array(j) = desire;
array2(j) = neighbor_distance;
end
end
sz2 = size(array);
output = double.empty;
numerator = 0;
denominator = 0;
tempr = 0;
for k = 1:sz2 %% averaging to find g6r from each different instance of particle difference
tempr = array2(k);
output(k,2) = tempr;
for n = 1:sz2
if(array2(n) == tempr)
numerator = numerator + array(n);
denominator = denominator + 1;
end
end
output(k,1) = numerator/denominator;
end