Как сократить время выполнения, заменив цикл while?
Я написал небольшой код в Octave, и его часть проверяет, равны ли значения в первых строках двух матриц, и если да, добавляя значение второй строки второй матрицы к значению второй строки первая матрица
Это та часть кода, которую я написал, используя небольшой набор данных:
PositionLoadArray =
1 5 3 7 4 6 9 2 1 2
1 2 3 4 5 6 7 8 9 10
X =
0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0
x=1; #row number in matrix X
y=1; #row number in matrix PositionLoadArray
while y<=columns(PositionLoadArray)
if PositionLoadArray(1,y)==X(1,x)
X(2,x)=X(2,x)+PositionLoadArray(,y);
y=y+1;
x=1;
else
x=x+1;
endif
endwhile
Это дает результат:
X =
0 1 2 3 4 5 6 7 8 9
0 10 18 3 5 2 6 4 0 7
Цикл работает и отлично работает для небольших наборов, подобных приведенному выше (т. Е. Когда общее количество столбцов для X и PositionLoadArray (макс. Значения x и y соответственно) невелико). Но цикл занимает часы, чтобы выполняться с большими значениями.
Как я могу сократить время выполнения и получить тот же результат?