找回密码
 注册
Simdroid-非首页
查看: 184|回复: 4

Range 简介

[复制链接]
发表于 2007-10-25 23:41:26 | 显示全部楼层 |阅读模式 来自 广东广州
在 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 时则写成:

[BookName]SheetName!CellRange  // workbook range
[MatrixBook]MatrixSheet!MatrixObject  // matrix range
[PageWindow]LayerName!DataPlot  // plots

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

评分

1

查看全部评分

 楼主| 发表于 2007-10-25 23:46:08 | 显示全部楼层 来自 广东广州

一、Renge Variable

Simdroid开发平台
在 Command Window 中(Window : Command Window)定义一个 Range Variable:

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

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

  1. 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:


  1. stats col(a); // Descriptive statistics on column A of active worksheet
  2. stats [book1]sheet2!Col(3); // Stats on column 3 of book1, sheet2
  3. range rr = (col(a), col(b)); // Two columns in active worksheet
  4. 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 = [book1]sheet2!col(a);

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

exp(rr);

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2007-10-26 10:50:24 | 显示全部楼层 来自 江苏南京
好,学到了!

评分

1

查看全部评分

回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-25 10:15 , Processed in 0.036570 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表