如何找到向量元素收敛的值的索引?

How to find the index of the value where vector elements converge?

假设我有一个向量:

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

可以看出,这个向量A稳定或收敛于1.436。如何在 MATLAB 中找到此值的索引,例如 1.436

编辑:

更多示例:

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 时。

根据您的编辑,假设向量将始终收敛并且收敛的值是最后一个元素 (A(end))。此外,假设收敛时,值等于最后一个元素。

思路是先找到不等于最后一个元素的最后一个元素的索引。那么index+1就是第一个收敛元素的index,即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