找到数组中的最后一个不同位置

时间:2017-07-06 14:56:33

标签: arrays matlab vector

我有一个由{0}组成的维A向量1xn。我想要一种非常有效的方法来查找j的最后一个元素的位置A,以便A(j)~=A(n)。如果A的元素全部相等,则代码应返回n

示例:

如果A=[1 0 1 1 1],我应该2 如果A=[0 0 0 0 0],我应该5 如果A=[1 0 0 0 0],我应该1

2 个答案:

答案 0 :(得分:3)

在一行中,只是为了它的乐趣:

result = min([find(A~=A(end),1,'last') numel(A)]);

答案 1 :(得分:2)

findlast标志一起使用。如果find导致空矩阵,则添加条件。

req= find(A~=A(end),1,'last');
if isempty(req) req=length(A); end