【发布时间】: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。
【问题讨论】:
我有一个向量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。
【问题讨论】:
一句话,只是为了好玩:
result = min([find(A~=A(end),1,'last') numel(A)]);
【讨论】:
A 矩阵,逐行应用?
A,如果我理解正确,试试这个:[~, ind] = max(bsxfun(@ne, flip(A,2), A(:,end)),[],2); ind = size(A,2)-ind+1;
将find 与last 标志一起使用。如果find 产生一个空矩阵,则添加一个条件。
req= find(A~=A(end),1,'last');
if isempty(req) req=length(A); end
【讨论】: