MATLAB:
array = randi(5, [1 10]); %
n = unique(array)'; %'
[r,~] = find(cumsum(bsxfun(@eq,array,n),2) == 4, 1, 'first');
if isempty(r)
val = []; ind = []; %
else
val = n(r); %
ind = find(array == val, 4); %
end
:
array =
1 5 3 3 1 5 4 2 3 3
val =
3
ind =
3 4 9 10
:
, . :
n =
1
2
3
4
5
, BSXFUN, , . :
result = zeros(length(n),length(array));
for i=1:length(n)
result(i,:) = (array == n(i)); %# row-by-row
end
, :
result =
1 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 1 1 0 0 0 0 1 1
0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 1 0 0 0 0
CUMSUM result . , :
>> cumsum(result,2)
ans =
1 1 1 1 2 2 2 2 2 2
0 0 0 0 0 0 0 1 1 1
0 0 1 2 2 2 2 2 3 4
0 0 0 0 0 0 1 1 1 1
0 1 1 1 1 2 2 2 2 2
cumsum(result,2)==4 ( , , ):
>> cumsum(result,2)==4
ans =
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
, FIND 1 : , 1 , . (r=3), val = n(r). , , 4 , , , 1, .
- FIND...