In Julia, if speed isn't too important, this gives the same results: a, b = [-1,-2,-3], [-3,-4,-5,-2] inter = intersect(a, b) (Int[findfirst(a, x) for x in inter], Int[findfirst(b, x) for x in inter])
And it should be a good deal faster than the MATLABism. Other functions you might find useful: ind2sub, div (integer division) On Tue, Jul 5, 2016 at 12:20 PM, siyu song <[email protected]> wrote: > Thanks, Fred, for your answer. But in fact I want to know the index of the > common elements of two integer vectors(Elements are all different in each > vectors). > For example, v1 = [1,2,3] and v2[3,4,5,2]. So the answer should be > common_index1 = [2,3], common_index2 = [1,4]. > I use a function as > function find_common(a,b) > a = reshape(a,length(a),1); > b = reshape(b,1,length(b)); > la = length(a); > lb = length(b); > a = a[:,ones(1,lb)]; > b = b[ones(la,1),:]; > comab = find(x->x==true,a .== b); > comab = comab.'; > coma = mod(comab+la-1,la)+1; > comb = floor(Int64,(comab+la-1)/la); > return coma,comb; > end > > So coma and comb is exactly what I want. In matlab this is easy to do. But > with julia, I haven't thought of a clever answer yet. > In matlab we can simply get coma and comb by [coma, comb] = find(a==b). > > 在 2016年7月5日星期二 UTC+9下午7:02:34,Fred写道: > >> julia> a=[1,3,5,7] >> 4-element Array{Int64,1}: >> 1 >> 3 >> 5 >> 7 >> >> >> julia> b=[2,3,5,6,7] >> 5-element Array{Int64,1}: >> 2 >> 3 >> 5 >> 6 >> 7 >> >> >> julia> intersect(a,b) >> 3-element Array{Int64,1}: >> 3 >> 5 >> 7 >> >> >> julia> union(a,b) >> 6-element Array{Int64,1}: >> 1 >> 3 >> 5 >> 7 >> 2 >> 6 >> >> >> >> Le lundi 4 juillet 2016 04:18:10 UTC+2, siyu song a écrit : >>> >>> But intersect doesn't tell us the index of the elements in the >>> matrix(array), I think. >>> >>
