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的某一区间统计值,不输出。命令在执行后会自动创建一系列变量,如图所示:
(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...