【问题标题】:Finding the last different position in an array查找数组中最后一个不同的位置
【发布时间】:2017-07-06 23:34:57
【问题描述】:

我有一个向量A,维度为1xn,由零和一组成。我想要一种非常有效的方法来找到A 的最后一个元素的位置j,例如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

【问题讨论】:

    标签: arrays matlab vector


    【解决方案1】:

    一句话,只是为了好玩:

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

    【讨论】:

    • 它是否也适用于A 矩阵,逐行应用?
    • @user3285148 不,它没有。你需要那个吗?问题说一个向量
    • 矢量没问题。我将发布另一个应用于矩阵的问题。谢谢
    • 感谢您的接受,但请考虑 Sardar Usama 的回答,它更清楚。这个唯一的“优点”是它使用了一行,但它更简洁,可读性更差
    • 对于矩阵A,如果我理解正确,试试这个:[~, ind] = max(bsxfun(@ne, flip(A,2), A(:,end)),[],2); ind = size(A,2)-ind+1;
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-14
      • 2013-08-19
      • 1970-01-01
      • 2018-09-05
      相关资源
      最近更新 更多