Re: Comparison between arrays with different lenght [message #88982 is a reply to message #88950] |
Thu, 10 July 2014 01:50  |
skymaxwell@gmail.com
Messages: 127 Registered: January 2007
|
Senior Member |
|
|
Hi
I think something like that. I'm not sure, that it's best way
PRO DIFFSIZEARRAYS
;opening src files
path1='D:\Work\IDL\DiffSizeArrays\data\file1.txt'
path2='D:\Work\IDL\DiffSizeArrays\data\file2.txt'
outPath='D:\Work\IDL\DiffSizeArrays\data\result.txt'
OPENR,lun1,path1,/GET_LUN
OPENR,lun2,path2,/GET_LUN
;init
array1=''
array2=''
line=''
;reading file1
WHILE NOT EOF(lun1) DO BEGIN
READF,lun1, line
array1 = [array1, line]
ENDWHILE
array1=array1[1:*]
;reading file2
WHILE NOT EOF(lun2) DO BEGIN
READF,lun2, line
;cut useless information; we will be have only julianday and average data
tmp=STRSPLIT(line,/EXTRACT)
line=tmp[0]+' '+tmp[3]
array2 = [array2, line]
ENDWHILE
array2=array2[1:*]
;open file for write
OPENW,lun3,outPath,/GET_LUN
;preparing data and merge data.
sz1=SIZE(array1)
sz2=SIZE(array2)
;only AVERAGE
headerFile=STRSPLIT(array2[0],/EXTRACT)
;headerFile[1]='AVERAGE'and print header for result file
PRINT,array1[0],headerFile[1]
PRINTF,lun3,array1[0],headerFile[1]
FOR I=1,sz1[1]-1 DO BEGIN
FOR J=0,sz2[1]-1 DO BEGIN
tmp1=STRSPLIT(array1[I],/EXTRACT)
tmp2=STRSPLIT(array2[J],/EXTRACT)
IF (tmp1[0] EQ tmp2[0]) THEN BEGIN
PRINTF,lun3,array1[i],tmp2[1]
PRINT,array1[i],tmp2[1]
ENDIF
ENDFOR
ENDFOR
;closing files
FREE_LUN,lun1,lun2,lun3
END
regards
|
|
|