FINDARRAY Find one array within another
I = FINDARRAY(A,B,'first') for the array B returns an index array of
the same size as B containing the smallest absolute index in A for each
element of B which is a member of A and 0 if there is no such index.
FINDARRAY(A,B) is the same as FINDARRAY(A,B,'first').
I = FINDARRAY(A,B,'last') for the array B returns an index array of
the same size as B containing the highest absolute index in A for each
element of B which is a member of A and 0 if there is no such index.
I = FINDARRAY(A,B,'all') returns a NDIMS(B)+1 dimensional array such
that I(:,...,k) contains the k-th absolute index in A for each element
of B, 0 otherwise.
See also find, ismember
Example:
>> findarray(pascal(3),magic(2),'all')
ans(:,:,1) =
1 6
0 5
ans(:,:,2) =
2 8
0 0
ans(:,:,3) =
3 0
0 0
ans(:,:,4) =
4 0
0 0
ans(:,:,5) =
7 0
0 0
Mukhtar Ullah (2021). FINDARRAY (https://www.mathworks.com/matlabcentral/fileexchange/6018-findarray), MATLAB Central File Exchange. Retrieved .
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Create scripts with code, output, and formatted text in a single executable document.
This function can replace FINDMEMBER that has been removed from the file exchange.
unfortunately, this solution is several times faster (JIT-acc) and - more importantly - doesn't use as much memory:
ixi=zeros(size(b));
ixa=zeros(size(b));
for i=1:length(a)
ia=strfind(a,a(i));
ib=strfind(b,a(i));
ixi(ib)=ia(1);
ixa(ib)=ia(end);
end
us