UNIQ [2] $SSW/goes/sxig12/IDL/Image_Algorithms/sxim_uniq.pro
[Previous] [Next]
 NAME:
	UNIQ

 PURPOSE:
	Return the subscripts of the unique elements in an array.

	Note that repeated elements must be adjacent in order to be
	found.  This routine is intended to be used with the SORT
	function.  See the discussion of the IDX argument below.

	This command is inspired by the Unix uniq(1) command.

 CATEGORY:
	Array manipulation.

 CALLING SEQUENCE:
	UNIQ(Array [, Idx] [/first] )

 INPUTS:
	Array:	The array to be scanned.  The type and number of dimensions
		of the array are not important.  The array must be sorted
		into monotonic order unless the optional parameter Idx is
		supplied.

 OPTIONAL INPUT PARAMETERS:
	IDX:	This optional parameter is an array of indices into Array
		that order the elements into monotonic order.
		That is, the expression:

			Array(Idx)

		yields an array in which the elements of Array are
		rearranged into monotonic order.  If the array is not
		already in monotonic order, use the command:

			UNIQ(Array, SORT(Array))

		The expression below finds the unique elements of an unsorted
		array:

			Array(UNIQ(Array, SORT(Array)))

 OUTPUTS:
	An array of indicies into ARRAY is returned.  The expression:

		ARRAY(UNIQ(ARRAY))

	will be a copy of the sorted Array with duplicate adjacent
	elements removed.

 Optional Keyword Parameter:
   first - if set, return index of FIRST occurence for duplicates
           (default is LAST occurence)

 CALLS: ***
	SXIM_UNIQ
 CALLED BY:
	ADD_ALT, ADD_DETAIL, ADD_FLAG, ADD_PLAN, ADJUST_REFCAL, ALL_VALS [1], ALL_VALS [2]
	ANALYZE [1], ANALYZE_IMG, APPLY_CDS_ADEF, BATSE_LAD_DRM, BATSE_SPEC_DRM, BSC_VALID
	CAT_OPEN [1], CHECK_DIST, CHK_DATAWIN, CHK_F_RASTER, CHK_F_STUDY, CHK_LINELIST
	CHK_V_RASTER, CHK_V_STUDY, CONCAT2D, CONCAT3D, CTRCALCHEK, CleanGlitchBox
	DATA_PATHS, DISPLAY_CDS_BURNIN, DISPLAY_NIMCP, DLASCAN, EIS_CPT_ASCII_TABLES [1]
	EIS_CPT_ASCII_TABLES [2], EIS_CPT_CHECK_STUDY [1], EIS_CPT_CHECK_STUDY [2]
	EIS_CPT_COMMAND_STORE_CHECK [1], EIS_CPT_COMMAND_STORE_CHECK [2]
	EIS_CPT_TABLE_DIFFERENCE [1], EIS_CPT_TABLE_DIFFERENCE [2]
	EIS_CPT_UNIQUE [1], EIS_CPT_UNIQUE [2], EIS_MULTIPLE_SEQUENCE_TABLES [1]
	EIS_MULTIPLE_SEQUENCE_TABLES [2], FF_SUMMARY, FIND_CAMPAIGN, FIND_CDS_STUDIES
	FIND_CLOSEST_ARR, FIND_DURATION, FIT_SPEC, FIX_IAP, FLAGOOL, FLARE_SORT
	FRAMEWORK ABSTRACT CLASS DEFINITION, FUNCT_FIT, FXBWRITM, FindAllFiles, GAINCOR
	GET_CDS_GIS, GET_NAR, GET_SLLD, GET_SUMER_FILES, GET_TIMING, GET_UNIQ_LIST
	GHOST_BUSTER, GT_BSC_CHAN [1], GT_BSC_CHAN [2], GT_CDS_QL, GetColors, GetRng
	HSI_DECIM_CORRECTION [1], HSI_DECIM_CORRECTION [2], HSI_HIST_GROUP
	HSI_MAP_EVALUATOR [1], HSI_SPECTROGRAMCHAN_OVERLAP_FIX
	HSI_SPECTROGRAM_DECIM_CORRECT, HSI_SPECTROGRAM_DECIM_TABLE
	Hsi_contact2fits [1], Hsi_contact2fits [2], IMCONTOUR, INDEX2MAP, INTERP2INTEG
	InsituTimeSeries, JOIN_STRUCT [2], LIST_ALT, LIST_ANOMALY, LIST_CAMPAIGN
	LIST_CDROM, LIST_DETAIL, LIST_DSN, LIST_EXPER, LIST_EXP_COMM, LIST_FLAG
	LIST_INST_DLYD, LIST_MAIN, LIST_MDI_M, LIST_NRT_RES, LIST_OP [1], LIST_OP [2]
	LIST_OTHER_OBS, LIST_OTHER_RES, LIST_PLAN, LIST_SOHO_DET, MAP_DISCLA2CONT
	MDI_SUMMARY_SUB1, MEAN_MAP, MELD_DISCSP [1], MK_CDS_PLAN, MK_LIBRARY_HELP
	MK_PLAN_SORT, MK_SOHO_TARGET, NET_DIR_DIFF, NEWSCAN, NORH_F2EVF [1]
	NORH_F2EVF [2], NORH_PR_EVX [1], NORH_PR_EVX [2], NORH_PR_INFO [1]
	NORH_PR_INFO [2], NORH_RD_TCX [1], NORH_RD_TCX [2], NORH_RD_TSX [1]
	NORH_RD_TSX [2], NORH_SYNTH_BYF [1], NORH_SYNTH_BYF [2], NORH_TRANS_BYF [1]
	NORH_TRANS_BYF [2], NORP_RD_AVG [1], NORP_RD_AVG [2], NORP_RD_DAILY [1]
	NORP_RD_DAILY [2], OCC_DBASE, OP_COM [1], OP_COM [2], OR_SHAPE
	PICKFONT  use to be XFONT, PLOT_GD_CALC, PLOT_MAP
	PLOT_MAP2 WARNINGTEMPORARY FIX ONLY FOR 16 bit ZBuffer support
	PLOT_SUPPORT, PRINT_STRUCT, RD_ADA, RD_BDA [1], READ_ANALIST, READ_HESI_DAT
	READ_HESSI_DAT, READ_STTE, REGEN_SYNOP, REM_DUP_TAG, REM_FST, REM_SEQ
	RESOLVE_NEW_OBS, ROWSORT, RdTap [1], RdTap [2], RdTap [3], SMK_FULLDET
	SPECTROGRAM CLASS DEFINITION, SPEX_COMMONS [2], SPEX_COMMONS [4]
	SPEX_PROC [1], SPEX_PROC [2], STEPPER [1], STEPPER [2], STEPPER [5], STEPPER_LP
	SXT_WEIGHT, TEST_DIR2, TKI_UDPSLIT, TOK_RD_DAILY, TYKW_RD_DAILY, TimePosn
	TimePosn_test, TimeXAxis, UNIQ_KEY, UPD_PLAN, UPD_SOHO_DET, UTPLOT_IMAGE, VSO_GET
	VSO__DEFINE, WAMPHIT, WCS_HCLEAN, WDUMPREC, WHERE_VECTOR, WIDG_HELP, WRITE_HKBYDATE
	W_HISTOGRAM, XCAMP, XDL [1], XDL [2], XSEL_LIST [1], XSEL_LIST [2], ads_into_att
	ads_into_pnt, adsdirs [1], adsdirs [2], att_exst, bcs_chi_norm, big_eph
	big_eph_short, cam_run_sum, chk_batse_env [1], chk_batse_env [2], chk_flares [1]
	chk_flares [2], db_gbo, delete_week [1], delete_week [2], delind [1], delind [2]
	doytim2ints, dpc_summary, eit_files, eit_fulldiskdb, ex2week [1], ex2week [2]
	extract_val, fidrange [1], fidrange [2], find_pixel_intersects, fitshead2struct
	flare_hist, flares2disk, fsp_11, fsp_mc, gen_file_id [1], gen_file_id [2]
	get_afile_size [1], get_afile_size [2], get_att, get_dc_image [2]
	get_dc_image [3], get_dc_warm, get_gevloc_data, get_hk_info [1], get_hk_info [2]
	get_leak_image [1], get_leak_image [2], get_leak_image [3], get_most_comm [1]
	get_most_comm [2], get_sfc_info, get_suncenter2, get_uniq, getwid, grid_data [1]
	grid_data [2], hastogram, hesi_grid_trans, hessi_grid_trans, hessi_grm
	hsi_as_appids, hsi_bad_pak, hsi_badpak_test, hsi_monthly_average
	hsi_monthly_filename, hsi_qlook_concat, hsi_ras_rdevent
	hsi_read_all_flare_list, hsi_sas_rdlimb, hsi_spectrogramACCBIN [2]
	hsi_spectrogram__define [1], hsi_spectrogram__define [2]
	hsi_spectrogram__define [3], hsi_spectrogram__get_obs [1]
	hsi_spectrogram__livetime [1], hsi_write_txt_flare_list, hxsgrs_fsp, ihy_db
	interp_img, ip_que_dmpver, iperr_sea, jitter_gif_xyimg, keyword_db
	list_mo_log [1], list_mo_log [2], make_views, matchem [1], matchem [2], mdipdist
	merge_batse_photons, merge_genxcat, mewe_spec  mewe_spec_lwa, mewe_spec [1]
	mewe_spec [2], mk_cd [1], mk_cd [2], mk_flick, mk_gsn_obs_s1, mk_mapfile [1]
	mk_mapfile [2], mk_mo_disk, mk_mo_disk2, mk_query [1], mk_query [2], mk_sd2
	mk_sdc [2], mk_sdc [3], mk_sdc [4], mk_sdm, mk_ssl, mo2wks, mo_check, mo_patch, mo_prep
	mon_health [1], mon_health [2], mxf_read_data, nagoya_glevel, new_mon_health [1]
	new_mon_health [2], norh_t2azel, path_data [1], path_data [2], path_sw [1]
	path_sw [2], pfi_dominant, phoenix_filedb_get, plot_pcal, plot_ssw_fov
	plot_trav [1], plot_trav [2], plot_trav [3], pmtras_analysis, pnt_exst
	pr_mdihk_trans [1], pr_mdihk_trans [2], pr_sxt_term, pr_uniq_hk, pro_list [1]
	pro_list [2], prt_afile_size [1], prt_afile_size [2], psk_correlate
	qLine_Sequence, qNagoya_PointSources, qView_PickFiles, qView_Shortname
	qsmei_sky_Pick, rd_fdss, rd_modb, rd_sumer [1], rd_sumer [2], rd_week_file [2]
	rd_ydbtap, rdtbl, read_eit, save_data [2], sea, search_files, sel_dc_image [1]
	sel_dc_image [2], sel_dc_image [3], seq_dset, seq_run_sum [1], seq_run_sum [2]
	ser_dset, setssw_windows, sgt_det_y, sgt_wave, show_obs2, show_obs3, show_obs4
	smei_buf_getframe, smei_buf_prep, smei_frm_get, smei_frm_name, smei_frm_property
	smei_getfile, smei_sky, smei_star_list, soup_obs2, spex_energy_ranges [1]
	spex_energy_ranges [2], ssc_files [1], ssc_files [2], ssc_files [3]
	ssw_install [1], ssw_install [2], ssw_install_explinkages, ssw_start_rpcserver
	ssw_strsplit, ssw_swmap_bestof, ssw_time2paths, ssw_upgrade [1], ssw_upgrade [2]
	ssw_upgrade_backup, sswdb_upgrade, sswhere, str2html [1], str2html [2]
	str2html [3], str_subset, str_top2sub, strjustify, strmids [1], strmids [2], strposn
	strrempat [1], strrempat [2], strsplit, sxi_files, sxl2radiance, sxl_select
	sxt_cen [1], sxt_cen [2], sxt_combine, sxt_decon [1], sxt_decon [2], sxt_eff_area
	sxt_flux [1], sxt_flux [2], sxt_flux [3], sxt_his2dbase, sxt_low8_match [1]
	sxt_low8_match [2], sxt_mwave, sxt_sumtime, sxt_suture [1], sxt_suture [2]
	sxt_uniq [1], sxt_uniq [2], sxtpnt_sum, taer_rn, term_times
	test_front_decimation_correct, test_rear_decimation_correct, tim2dbase
	timegrid, timeline, timeline2html, topsdb [1], topsdb [2]
	tr_mech_summary_img month, tr_reformat, trace_cat2data, trace_dph2struct [1]
	trace_files, trace_get_vignette, trace_last_movie [1], trace_last_movie [3]
	trace_movie_context, trace_movie_index [1], trace_movie_index [2]
	trace_special_movie [1], trace_special_movie [2], trace_special_movie [3]
	trace_special_movie2, trace_success_file, trace_uniq_movies, tvmulti
	uniq_fid [1], uniq_fid [2], url_decode, vu_insitu, vu_insitu_raw, vu_mean, vu_movie
	web_seq, weekfiles, weekid [2], wfilpck, wrt1orbit [1], wrt1orbit [2]
	www_help_break, www_help_get_info, xcheckip, xdisp_sci5k, xgen_widget
	xset_chain [1], xset_chain [2], xspr [1], xspr [2], ydb_exist [1], ydb_exist [2]
	ydb_exist [3], ydb_exist [4], ydb_install [1], ydb_install [2], ydb_use
	yo_index2path
 COMMON BLOCKS:
	None.

 MODIFICATION HISTORY:
	29 July 1992, ACY - Corrected for case of all elements the same.
       30 Aug  1994, SLF - added /first keyword
	 1 Sep  1994, MDM - Modified to return a vector for the case of
			    a single element being returned (so it matches
			    the pre IDL Ver 3.0 version of UNIQ)
		           - Modified to return [0] for a scalar
       10 Sep  1996, Zarro
                         - modified to return 0 for a scalar and a scalar
                           for single element being returned.
       10 Oct  1996, Zarro
                         - added OLDWAY keyword to return,[value] for scalar
                           value