如何找到向量元素收敛的值的索引?
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
假设我有一个向量:
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