Как найти индекс значения, где сходятся векторные элементы?

Скажем, у меня есть вектор:

A = [1.444, 1.425, 1.435, 1.438, 1.438, 1.436, 1.436, 1.436, 1.436, 1.436];

Как видно, этот вектор A стабилизируется или сходится при 1.436, Как я могу найти индекс этого значения, например 1.436 в MATLAB?

Редактировать:

Больше примеров:

B = [1 2 1 4 2 5 6 2  5 5 5 5 5 5 5 5 5 5]
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]

Таким образом, вывод, который я хочу, - это индекс, когда элементы в векторах больше не меняются. Скажем, например, что значения в векторах принимаются за раз t, Таким образом, для первого вектора этот индекс будет в индексе 9когда элементы остаются постоянными при 5,
То же самое с вектором C, Требуемый результат здесь - индекс 9когда элементы постоянны в 224.454,

1 ответ

Решение

В соответствии с вашими правками, предположим, что вектор всегда будет сходиться и конвергированное значение будет последним элементом (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
Другие вопросы по тегам