||
;计算以为数组的交集
;pro jiaoji
; compile_opt idl2
; a=[1,1,23,4,5,1,2,3]
; b=[12,2,23,2,5,5,6,33,45]
; index=where(a eq b)
; c=a[index]
; print,index
; print,c
;end
;计算二维数组的交集
;pro jiaoji
; compile_opt idl2
; a=[[1,2],[3,4]]
; b=[[1,3],[2,4]]
; index=where(a eq b,count,complement=index_c,ncomplement=index_n)
; ;count为满足条件的元素个数,complement为不满足条件的数组元素下标,ncomlement为不满足条件的元素数组的个数
; c=a[index]
; print,'index=',index
; print,'c=',cn
;end
;计算三维数组的交集
pro jiaoji
compile_opt idl2
a=[[[2,8,3,4],[2,2,3,1]],[[2,8,2,2],[2,3,4,6]],[[2,8,1,4],[6,2,2,6]]]
; help,a
; help,size(a,/dimension)
; help,n_elements(a)
;第一种方法
; ind=where(a[*,*,0] eq a[*,*,1],count,complement=c1) and where(a[*,*,0] eq a[*,*,2],complement=c2) and where(a[*,*,1] eq a[*,*,2],complement=c3)
; inter=a[ind]
;或第二种方法
;ind=where(a[*,*,0] eq a[*,*,1] and a[*,*,0] eq a[*,*,2] and a[*,*,1] eq a[*,*,2],count,complement=ind_c,ncomplement=ind_c_count)
;print,ind_c_count
;第三种方法
for i=0,2 do begin
if (i+1 gt 2) then break
ind=where(a[*,*,i] eq a[*,*,i+1],count,complement=ind_c)
; print,'i=',i
; print,'a[*,*,i]=',a[*,*,i]
; print,'i+1=',i+1
; print,'a[*,*,i+1]=',a[*,*,i+1]
endfor
print,'ind=',ind
print,'ind_c',ind_c
end
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-19 13:40
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社