Синтаксически я бы предложил следующее:
function List = findVLInd(FL, StartingPoint)
List = StartingPoint;
for a = 1:50000
List(end+1, :) = [find(List(a,1)==FL(:,1))];
find(List(a,1)==FL(:,2))];
find(List(a,1)==FL(:,3))];
Lz = FL(List,:);
List(end+1:end+size(Lz,1), :) = [Lz(:,1);Lz(:,2);Lz(:,3)];
List = unique(List);
end
end
Это удаляет операцию переназначения List = [List; X]
, которая копирует содержимое списка в другую переменную, а затем удаляет его (хотя новая переменная имеет то же самоеимя как предыдущее) и заменяет его добавляющей операцией, которая намного быстрее в Matlab, но все еще медленная. Вызвав первые три строки в вашем цикле for
в одном блоке, я также могу уменьшить количество таких операций.
Согласно комментариям ChrisLuengo и pacta-sunt-servanda , есть другие проблемы, которые вы, возможно, захотите решить, направленные на улучшение функциональности вашего кода.