蓝色梧桐 发表于 2007-10-25 23:41:26

Range 简介

在 Origin 8 之前的版本中,worksheet 上的 column 用 Data1_A,%(Data1, 1) 等格式表示,而从 Origin 8 开始 workbook 支持 multi-worksheet,因此需要一种新的办法来引用各个 sheets,columns 或者 cells,从而产生了 Range 的概念。Range 的格式为:

[WinName]LayerName!DataRange

Origin 常用的 windows 有 workbook,matrix 和 graph,因此 range 具体到各个不同的 windows 时则写成:

SheetName!CellRange// workbook range
MatrixSheet!MatrixObject// matrix range
LayerName!DataPlot// plots

这样的格式跟 Excel 有点类似,但需要注意的是 Origin 的 Range 没有 Excel 那么自由(原因很多,比如兼容问题等)。直接使用 Range 只能在作为 X-Functions (另外一个新引入的东东)的参数才合法,否则则需要定义一个 Range Variable。下面将分别介绍。

蓝色梧桐 发表于 2007-10-25 23:46:08

一、Renge Variable

在 Command Window 中(Window : Command Window)定义一个 Range Variable:

Range 关键字 + 变量名 = 具体的 Range

比如:range cc = Sheet2!Col(3);   // Column 3 on Book1, Sheet2
range ll = Layer1!2;       // Second curve on Graph1, layer1
range mm = MSheet1!Mat(2); // Second matrix object on MBook1, MSheet1定义完 range variable 后可以进行一些基本的运算,如:range r1 = Sheet1!Col(1);
range r2 = Sheet2!Col(2);
r2 = 2*r1;当定义 range 时,active 的 window 是想要定义的 range 的 window,可以省略前面两层,如:range rr = Col(1);// First column of active worksheet
rr *= 2;如果 range variable 定义到整个 column,sheets,layer 或者整个 window,可以用 range variable 代表这些 object 并可以访问这些 object 的属性。如:range ws = sheet1! // "!" is necessary. ws represents sheet1 in book1可以敲入ws.=来列出整个 worksheet 的属性,或者修改某些属性,如
ws.name$ = "Hello"; // rename worksheet

蓝色梧桐 发表于 2007-10-25 23:48:10

二、直接使用 Range 只能在作为 X-Functions 的参数

X-Function 是 Origin 8 引入的新的概念,一般用户不需要了解什么是 X-Function,用户可以像使用 LabTalk 命令或者 Matlab 函数那样使用 X-Function。当在 command window 中敲入 X-Function 名字时,自动补齐功能会给你提示需要哪些参数。而 range 可以直接作为 X-Function 的参数,当然,你也可以先定义一个 range variable,再作为参数输入。比如 stats 这个 X-Function:


stats col(a); // Descriptive statistics on column A of active worksheet
stats sheet2!Col(3); // Stats on column 3 of book1, sheet2
range rr = (col(a), col(b)); // Two columns in active worksheet
stats rr; // stats on range variable rr;

蓝色梧桐 发表于 2007-10-25 23:49:37

三、一个应用

毕竟用 LabTalk 或者 Origin C 编程的人不多,我想更多的人用到 range variable 的是在 Set Column Value 这个 dialog 上。如果 Set Column Value 需要引用的数据在同一个 worksheet 上,则 col(a)、col(b) 还是可以满足需求的,如

col(b) = exp(col(a));

但若要引用另外的 workbook 或者 worksheet 上的 column 时,则需要先定义一个 range variable。如下图所示,展开下面的 Before Formula Scripts 面板,先定义一个 range variable

range rr = sheet2!col(a);

然后才在上面的 edit box 上写入 set value 的条件:

exp(rr);

[ 本帖最后由 蓝色梧桐 于 2007-10-26 00:17 编辑 ]

cherry83 发表于 2007-10-26 10:50:24

好,学到了!:victory:
页: [1]
查看完整版本: Range 简介