IGOR基础知识篇(二)

2021-01-06  本文已影响0人  Aerosols

①将原始的pxp文件缩小

function slim()

variable t0 =StopMSTimer(-2)  

wave SizeBC  = root:SizeBC
wave LEOsize = root:LEOsize
wave DateTimeWave = root:DateTimeWave
wave lagtime = root:lagtime

wavestats/Q SizeBC     /// 找出SizeBC非nan的个数并提取
variable numreal = 96901751
variable nint=numpnts(SizeBC)

variable i=0,j=0

make/O/D/N=96901751 datetimewave2
make/O/N=96901751   sizebc2
make/O/N=96901751   leosize2
make/O/N=96901751   lagtime2

do 
   if (SizeBC[i]>0)
   
      datetimewave2[j] = DateTimeWave[i]
      sizebc2[j] = SizeBC[i]
      LEOsize2[j]= LEOsize[i]
      lagtime2[j]= lagtime[i]
      
      j+=1
   endif
   i+=1
while(i<nint)

variable t1 =StopMSTimer(-2)
print (t1-t0)/1000000      ///   计算程序运行时间
end

(1)StopMSTimer(-1)返回计时器的频率,StopMSTimer(-2)返回从计算机开始运行到当前的时刻值(以μs为单位)。
(2)WaveStats/Q/R=[startP,endP ] 获取wave的某一区间统计值,不输出。命令在执行后会自动创建一系列变量,如图所示:

WaveStats.png
(3)Make/O/D/N=(num,num) , 新建double型二维wave。
(4)流程控制语句:
///// 条件判断语句  ///////

/// 1.
if (<expression>)
 <TRUE PART>
else
 <FALSE PART>
endif

/// 2.
if (<expression>)
 <TRUE PART1>
elseif
 <FALSE PART2>
else
 <FALSE PART>
endif
///////////////////////////


///// 循环语句  ///////

/// 1.for循环
for(<initialize>;<continue test>;<update>)
  <loop body>
endfor

/// 2.do while循环
do
  <loop body>

while(<expression>) 
///////////////////////////

常见运算符:


运算符.png

②在一个pxp文件中导入另一个pxp文件的数据

function load_data()
newpath Data,"E:dry"
LoadData/P=Data/Q/R "1213-copy.pxp"
end

通常用到的函数包括:LoadData、IndexedFile、IndexedDir等。

③连接Wave

function  cat_var()
   // SetDataFolder root
   wave testwave     = root:testwave
   wave testwave1   = root:testwave1

  Concatenate/O/KILL {testwave,testwave1},testwavef
  Redimension/S testwavef
end

Tick\SLabel\M 上标
Tick\BLabel\M 下标

④排序

Sort [/A /DIML /C /R] sortKeyWaves,sortedWaveName...
上一篇下一篇

猜你喜欢

热点阅读