Origin40 中常用可执行命令
Origin40 中常用可执行命令(Labtalk语言)汇总
本节内容也适合于其它版本的ORIGIN
一、变量、算式与函数
在Origin的Script Window中,用户可以象在其它程序语言中一样定义变量,如:A=12,B=15,变量可以参加运算如:C=A*B,则C=180。在Script Window中,用户也可以直接输入算式进行计算,如:23+165*76-12/17=12562。应该注意的是在Script Window中,每一行输入完毕后,若直接按回车键,则该命令马上被执行,会立刻得到计算结果,若要输入多行算式或命令后再一齐执行,需要将Script Window菜单中的script execution选项取消,并且在每一行结束后输入一个分号“;”。
在Origin40中,有许多内部函数是可以直接调用的,如:
基本数学函数:sin(x), cos(x), log(x), ln(x),abs(x),angle(x,y) ,exp(x),sqrt(x),mod(x,y),rmod(x,y),int(x),nint(x) ,tan(x) ,asin(x), acos(x), atan(x),sinh(x), cosh(x), tanh(x)。当然用户也可以定义自己的函数式。
其它常用函数有:数据生成函数data(x1,x2,inc),工作表格列函数col(colname),工作表格单元函数col(colname)[row#],求和函数sum(dataset),该函数可产生:总和sum.total、平均值sum.mean、数据总数sum.n、标准差sum.sd、最大值sum.max、最小值sum.min等值,T检验T值函数Ttable(x,n),其中X为?σ,n为数据点个数,F检验F值函数Ftable(x,m,n),其中X为1-σ,m、n为自由度。σ为置信度水平。
二、语句与语法
Origin40中有一个称之为Labtalk的程序语言,允许用户编写相应的程序语句,实现某些Origin40本身没有提供的功能。该语言与C语言有些类似:
1.程序可在Script Window中编写,也可以在其它本文编辑器中编辑,并以*.txt形式保存。
2.每个语句之后加分号“;”表示该句的结束。
3.多行语句组成的程序块要包含在花括号{}中,如判断语句、循环语句等。如:IF(表达式)
{
语句1;
语句2;
………;
………;
Else
语句1;
语句2;
………;
………;
}
For(I=1; I=N; I+=1)
{
语句1;
语句2;
………;
………;
}
下面是利用Labtalk语言编写的、用于T检验的程序:
//////////////////////////////////////////////////////////////////////
//t-Test (One Population)
//////////////////////////////////////////////////////////////////////
[tTestOne]
#Performs t-test on highlighted column
TestColSel;/* see above */
CheckVar tTestLevel 0.05;
CheckVar tTestMean 0;
GetNum $WksStat.tTestOneMean tTestMean
$WksStat.tTestOneSigLevel tTestLevel
$WksStat.tTestOnePopulation;/* user can cancel at this point */
sum(%C);
df = sum.n-1;
t = (sum.mean-tTestMean) * sqrt(sum.n)/sum.sd;
P=incbeta(df/(df+t*t),0.5*df,0.5);
///RKM 2/3/96 REDIRECT_TO_NOTES
Redirect=type.redirection;
if(type.redirection&2==2) %K=type.notes$;
if (exist(Results)!=9)
{
win -n notes Results;
}
type.notes$=system.notes.created$;
type.redirection=6; //Outpout goes to Notes window, error goes to Script repeat 2 {type}; //Skip a couple spaces
type "$(@D,D9)"; //Type out date and time
type;
type $statistics.tTest1Pop1; //Main Header Line
type; //Blank Line
type $statistics.tTestVar; //Setup Output Table
Separator 4;
type $statistics.tTestSum;
Separator 4;
type $statistics.tTestVarT;
type $statistics.tTestVarP;
type;
type -l $statistics.tTestMean0;
type -l " $(tTestLevel) ";
type $statistics.tTestMean1;
type -l $statistics.tTestMean2;
type -l " ";
if (P>tTestLevel)
type $statistics.tTestNoDiff;
else
type $statistics.tTestDiff;
type; //Give 2 extra blank lines
type;
type.redirection=Redirect;
if((type.redirection&2==2) && (exist(%K)==9))
type.notes$=%K;
else
type.redirection=5;
del Redirect;
三、ORIGIN针对窗口操作的有关命令
建立一个新的数据窗口:win –T Data或者domenu 16;
建立一个新的图形窗口:win –T Plot 或者domenu 12;
建立一个新的函数窗口:domenu 19;
激活指定的窗口:win –a 窗口名;
四、针对激活窗口进行操作的命令:
在工作表格中添加n列:worksheet –a n;
在工作表格中选中某列:worksheet –s n 0;例如;worksheet –s 2 0; 选中第二列,worksheet –s 1 0 2 0 3 0表示选中前三列。
在工作表格指定列(选中列)前插入一列worksheet –i wks.c1;
将选中列的内容复制到剪贴板上:domenu 512;
将剪贴板上的内容复制到选中列上:domenu 513;
将选中列的内容删除:domenu 881;
对选中的列进行排序:Sort –w %H %C(升序)或Sort –wd %H %C(降序);
利用数据窗口中选中的数据作图:worksheet –p 200; 注:200为线图,201为散点图,202为点线图等。
五、其它常用变量与命令:
%H为取得当前活动窗口的名称;
Wks.sel=?,判断是否有数据列被选中,若=8为选中,=0为未被选中;
Exist(%H)=?,判断当前活动窗口的类型,=0为没有活动窗口,=1为数据列,=2为工作表格,=3为图形窗口,=4为变量,=5为矩阵,=6为宏,=7为工具条;
%(wksname,col,row),返回指定工作表格中某一单元的值, 例如: %(Data1,6,25)给出名为Data1的工作表格中第六列,第25行一个单元中的数据。
Type “………“在Script Window中输出字符串;
Type %d输出字符串变量d的值;
Type –b %d在屏幕上输出字符串d的值,并响铃,出现确定提示框;
Type –c %d在屏幕上输出字符串d的值,并响铃,出现确定或取消提示框;
Type –a 打开Script Window窗口;
Type “$(@D,D9)”,输出当前日期与时间;
Type “……$(表达式)”,在Script Window中输出字符串……及表达式的值;
例如:type"the result is $(23+56)";在Script Window中输出的结果是the result is 79 ;
Separator n,输出间隔线,其中n为间隔线的个数,例如:Separator 1输出的结果为:
“---------------“;
若要想在图形窗口的坐标系中指定位置显示信息可用下面的Label命令:
Label x y 信息;在指定坐标点x,y处显示信息两个字。
Label How are you;在坐标系左上角显示How are you 。
利用-b n开关可给信息加上背景,n=0,无背景,n=1,阴影背景,n=2大理石色背景。
如:Label –b 2 –a 2 3 你好!(注意背景开关应在前面)。
也可以用Label 命令指定x轴或y轴标,如:
Label –b 1 –xb(yl) Time;产生一个带阴影背景的下x(左y)轴标题,其内容为Time。
在最前面可加字体控制开关-f(字体名),如:-f (Times New Roman),设置字体为Times New Roman。
下面的命令在指定的图形窗口中的指定位置,加上x轴标题Time,y轴标题Temp,设置字体为Times New Roman ,字号为30号,背景为阴影;在坐标系指定位置输出信息“How are you? Fine, thank you!”分两行输出,字体为Roman,字号为36号,背景为大理石色。
win -a graph1;/激活图形窗口/
label -f (Times New Roman)-b 1 -xb Time;/在x轴标题处输出字体为Times New Roman ,背景为阴影,内容为Time的标题/
page -s xb;/选定x轴标题/
select -f s 8;/设置字号增加8号(默认值为22)即为30号字/
page -s;/取消选择/
label -f (Times New Roman)-b 1 -yl Temp;
page -s yl;
select -f s 8;
page -s;
label -sa -f Rom -b 2 -a 3 18 -n qqq How are you\-(10)?\r\nFine, thank you\+(20)!;/在坐标系点x,y=3,18处分两行输出信息:How are you 10? Fine , thank you20!,信息框的名称为qqq/ page -s qqq;
select -f s 14;
page -s;
********
Copy -s npt %C Db ;将选中的列插值n个点,并存于变量Db中;
Data(min,max,(max-min)/(npt-1))对变量或选定的列赋值npt个点,起点为min ,终点为max,增值为(max-min)/(npt-1);主要用于插值后对新值的坐标进行重新定义。
六、Origin中的按钮编辑功能
利用前面讲的语言规则与命令, 可以在Origin中编制一个应用程序界面,以完成相应的功能。下面是利用按钮功能编制的简单程序界面:
图表4- 1
进行按钮编辑一般按以下步骤进行:
1、打开一个图形窗口或工作表格窗口,将其中的所有对象去掉(如:工作表格、坐标系等),利用工具框中的文本工具T,或形状工具产生相应的按钮基本形状,也可将一个图标或其它的图形粘贴到空白页面上。
2、在编辑菜单中选择按钮编辑模式(Batton Mode),选中要编辑的对象,在格式菜单中选择标签控制命令(Label Control),打开相应的对话框,在其中输入相关的命令,设置命令执行的方式等。要想检验按钮执行的效果,必须先在编辑菜单中取消按钮编辑模式,此时被编辑的对象已转化为可执行的按钮,可通过相关的操作来执行其中的命令。
下面是利用ORIGIN 的LABTALK 语言编写的求双波长法最佳波长对的程序
用双波长分光光度法进行定量分析有很多优点:它可以进行多组分同时测定而无需解联立方程,也可以方便地校正背景吸收及吸收曲线重叠的干扰,可以进行混浊试样的分析和导数光谱的研究等。但利用双波长分光光度法进行定量分析的困难之处在于最佳波长对的选择。
在Origin4.0中,利用其所带的Labtalk 语言,用户可以根据需要,编写相应的程序,以达到解决Origin4.0本身未提供的某些功能的目的。下面的实例说明了如何利用Labtalk 语言来选择双波长分光光度法中的最佳波长对。
对于最佳波长对的选择有等吸收法和系数倍率法(K系数法)。目前比较实用的是后者。其基本原理如下:
在给定的实验条件下,在所选定的波长范围内测定n个实验数据(λ、)(λM A 、)(λN A )
。其中λ为测定波长,)(λM A 为该波长处待测组分M的吸光度,)(λN A 为该波长下干扰组分N的吸光度。对倍率系数法而言,对于波长对(1λ、2λ),设置系数:
)
()
(12λλN N A A K =
,并将混合物在2λ处的吸光度减去在1λ处的吸光度的K倍,则得:
M
M M M N M N M N M N M c KA A A A K A A KA A A ??=-=+-+=-=?++ελλλλλλλλ)()())
()(()()(1211221)(2)(21
式中,M c 是待测组分的摩尔浓度,M ε?是在1λ、2λ处的摩尔系数差值,可视为常数。 选择最佳波长对的原则是要求21A ?尽可能大,且对应的误差21
211A K
E ?+=
最小的一对波长。根据以上思路,设计数据处理过程如下:
打开Origin4.0,输入测定的波长、被测物吸光度、干扰物吸光度。打开 Script Window ,编写或调入下列程序:
win -a data1;(激活原始数据工作表格) worksheet -s 2 0;(选定其第二列数据)
copy -s 101 %c db1;(将第二列数据作插值运算,产生101个新数据,存在变量db1中) worksheet -s 3 0; (选定其第三列数据)
copy -s 101 %c db2; (将第三列数据插值,产生101个新数据,存在变量db2中) sum(col(a));(对第一列求和)
zx=sum.min;(将该列的最小值赋于变量zx 中) zd=sum.max; (将该列的最大值赋于变量zd 中) win -t data;(新建一个工作表格Data2)
col(a)=data(zx,zd,(zd-zx)/100);(将原始数据的波长插值成101个点赋于新表格第一列) col(b)=db1;(将原始数据第二列插值结果赋于第二列) worksheet -a 1;(在新表格中添加一列)
col(c)=db2;(将原始数据的第三列插值结果赋于第三列) worksheet -s 2 0;(选中第第二列)
sort -wd %H %C;(对第二列作降序排列)
EQ=99999;(设置一个很大的误差值,以便运算时取代) win -a %H;(激活当前工作表格窗口)
for(i1=1;i1 <= 100;i1=i1+1)(从头开始计算每一对波长对的21A ?、K 值和误差值EQ ) { (设计双循环对插值产生的每一对波长对应的数据进行计算、判断) if(col(2)[i1] > (1/EQ)) { for(j=i1+1;j <= 101;j=j+1) { K1=col(3)[j]/col(3)[i1]; DRTA=col(2)[j]-K1*col(2)[i1]; ER1=(1+K1)/abs(DRTA); BC1=col(1)[i1]; BC2=col(1)[j]; if(ER1 <= EQ) { EQ=ER1; KZH=K1; DRTAZH=abs(DRTA); BCZH1=BC1;
BCZH2=BC2;
}; }; }; };
win -t tongji tongji;(打开一个名为统计的工作表格,(必须事先定义,见图表4-29)) col(1)[1]= KZH;(第一列一单元格中为最终计算的K 值) col(2)[1]=EQ;(第二列一单元格中为计算的最小误差EQ ) col(3)[1]=DRTAZH;(第三列一单元格中为计算的21A ?值)
col(4)[1]=BCZH1;(第四列一单元中为计算所得最佳波长对中的第一波长) col(5)[1]=BCZH2; 第五列一单元中为计算所得最佳波长对中的第二波长) win -a data1;(激活原始数据工作表格)
worksheet -s 2 0 3 0;(选中原始数据中的第二列与第三列) worksheet -p 202;(将原始数据作成点线图)
编写或调入完毕后,用鼠标选中所有内容,按下回车键,所有命令立即被执行,产生最佳波长对对应的21A ?值、K 系数值、对应的误差值及原始数据曲线图。
图表4- 2
为了执行方便,也可将上面的程序,作成按钮模式。先打开Origin4.0,建立一个三列的工作表格,工作表格的右侧空白处,用文本工具输入一段文字,然后从编辑菜单中选择按钮编辑模式,选中该文字内容,从格式菜单中选择标签控制命令,打开对话框,将上面的程序复制到指定的文本框内,从相邻的命令执行方式(Script, run after…)列表框中,选择按下按钮(Button Up)。关闭对话框,从编辑菜单中取消按钮编辑模式,此时,被编辑的文本转化为可执行的命令按钮,按下此按钮,程序开始执行。如下图所示:
图表4- 3
第一列为波长(按升序输入,或输入后按升序排序),第二列为被测物吸光度,第三列
为干扰物吸光度。右面的按钮是用上述方法产生的。
例6:在25毫升比色管中分别加入6.0g μ的钼标准液,20.0g μ钨标准液依次加入3毫升盐酸,2毫升SAF ,2毫升CTMAB ,稀释到刻度,摇匀。20分钟后用1厘米比色池在分光光度计上从460-560nm 波长范围内,每隔4nm 读取一次吸光度值,得到如下26组(λ、
)(λM A 、)(λN A )数据,试确定其最佳波长对。(A=λ, B=)(λM A , C=)(λN A )
按上面要求的步骤操作,得到以下结果:倍率系数K=12.94,误差值E=1.61,21A ?=8.67,最佳波长对为:λ=512与λ=528。
打卡制度