Согласно вашему редактированию, предположим, что вектор всегда будет сходиться, а конвергированное значение является последним элементом (A(end)
).Также предположим, что при конвергенции значения равны последнему элементу.
Идея состоит в том, чтобы сначала найти индекс последнего элемента, который не равен последнему элементу.Тогда индекс + 1 - это индекс первого сходящегося элемента, то есть find(A~=A(end),1,'last') + 1
Пример 1:
A = [1.444, 1.425, 1.435, 1.438, 1.438, 1.436, 1.436, 1.436, 1.436, 1.436];
index = find(A~=A(end),1,'last') + 1
Выход:
index =
6
Пример 2
B = [1 2 1 4 2 5 6 2 5 5 5 5 5 5 5 5 5 5 5];
index = find(B~=B(end),1,'last') + 1
Выход:
index =
9
Пример 3
C = [224.424 224.455 224.454 224.456 224.456 224.452 224.451 224.456 224.454 224.454 224.454 224.454 224.454 224.454 224.454];
index = find(C~=C(end),1,'last') + 1
Выход:
index =
9
Обновление:
Поскольку вы имеете дело с конвергенцией, лучше указать допуск на конвергенцию.Например:
tolerance = 1e-5;
A = [1.444, 1.425, 1.435, 1.438, 1.438, 1.436, 1.436, 1.436, 1.436, 1.436];
index = find(abs(A - A(end)) >= tolerance,1,'last') + 1
Вывод:
index =
6