Я пытаюсь запустить этот кусок кода в matlab, но он имеет высокую сложность , несмотря на то, что matlab очень медленный с циклами. Может немного помочь мне оптимизировать код ниже.Сокращение времени на сложность кода matlab
for k=1:th
for i=1:D-1
for j=i+1:D
if(dist(j,k)>dist(i,k))
t=ClassP1(k,i);
ClassP1(k,i)=ClassP1(k,j);
ClassP1(k,j)=t;
end
end
end
end
где
размер (ClassP1) = 20x4276
размер (расстояние) = 4276x20
Спасибо большое заранее
Rinadi
Новые версии Matlab не медленны в циклах. Есть ли какая-то реальная проблема с временем, или просто вы хотите улучшить решение? – grantnz
Это не будет сильно увеличивать производительность, но быстрый совет: замена двух элементов: 'ClassP1 (k, [ii, jj]) = ClassP1 (k, [jj, ii])'. –
grantnz: Я больше беспокоюсь о циклах for, есть ли способ, как не использовать их. Так как Matlab основан на JAVA, это не так быстро с циклами, а для циклов 3 - вложенными. Это сильно меня задерживает. @Robert Спасибо, я попробую это сейчас. –