当前位置: 首页 > ds >正文

Origin LabTalk

之前用惯了matplotlib绘图,出于科研需要部分图用origin来画,但是还是想着要结合python来处理数据更加的方便,经过一番捣鼓发现origin自带有labtalk,并且还带有python的环境,真可谓是NB的很。
若能由程序代劳,何必亲手?那些简单重复之事,交由无趣的机器去完成,腾出的时间,便可用来细赏花草,静观四季流转。

LabTalk 是一种用于数据分析、图形绘制和自动化任务的脚本语言。它是 OriginLab 软件的内置脚本语言,可以帮助用户自动化复杂的分析任务,提高工作效率。LabTalk 的语法类似于 C 语言,支持条件语句、循环、函数定义等编程功能。通过 LabTalk,用户可以编写脚本来执行各种数据处理任务、进行批量图表绘制、调整图形属性等。

选中一列,点击设置列值

在这里插入图片描述

在设置列值这里将labtalk脚本输入进去即可。

在这里插入图片描述

也可以打开窗口中的脚本窗口

在这里插入图片描述

1. 变量定义和赋值

// 定义一个数值变量
int num = 10;// 定义一个浮动变量
double pi = 3.14159;// 定义一个字符串变量
string message = "Hello, Origin!";// 定义一个数据范围变量(例如列)
range r = col(A);

2. 范围(Range)

range 是 LabTalk 中用于表示数据的对象,通常用于访问工作簿中的列、行或单元格。

// 获取列 A 到列 D
range r1 = col(A);
range r2 = col(B);
range r3 = col(C);
range r4 = col(D);

3. 循环

LabTalk 支持 for 和 while 循环。常用的 for 循环如下:

// 使用 for 循环遍历列数据
int n = r1.GetSize();  // 获取列数据的大小
for (int i = 1; i <= n; i++) {// 获取列中第 i 行的数据double value = r1[i];// 执行某些操作r2[i] = value * 2;  // 将值乘以 2 然后存储到列B
}

4. 条件判断

LabTalk 中的条件判断使用 if 和 else。

// 判断某个数值是否大于 10
if (num > 10) {// 如果条件成立,执行此代码块message = "num is greater than 10";
} else {// 如果条件不成立,执行此代码块message = "num is less than or equal to 10";
}

5. 函数

LabTalk 提供了很多内置函数,用于处理数据、图形生成等操作。例如,sum() 用来计算某个范围的总和,mean() 用来计算均值。


1. 数学函数
这些函数用于执行基本的数学运算和计算。sum(range): 计算数据范围的总和。mean(range): 计算数据范围的均值。min(range): 返回数据范围的最小值。max(range): 返回数据范围的最大值。stdev(range): 计算数据范围的标准差。var(range): 计算数据范围的方差。abs(value): 计算数值的绝对值。sqrt(value): 计算数值的平方根。log(value): 计算数值的自然对数(以 e 为底)。exp(value): 计算数值的指数。2. 统计函数
这些函数用于统计分析,计算不同的统计量。correlation(range1, range2): 计算两个数据范围之间的皮尔逊相关系数。covariance(range1, range2): 计算两个数据范围之间的协方差。regression(range1, range2): 计算两列数据之间的线性回归。median(range): 计算数据范围的中位数。percentile(range, p): 计算数据范围的 p 百分位数。rank(range): 计算数据范围中每个值的排名。mode(range): 计算数据范围的众数。3. 数据操作函数
这些函数用于处理数据,例如筛选、排序、查找等。sort(range): 对数据范围中的值进行排序(默认升序)。find(range, value): 查找数据范围中是否包含某个值,并返回其位置。replace(range, old_value, new_value): 替换数据范围中的值。unique(range): 获取数据范围中的唯一值。removeNaN(range): 移除数据范围中的 NaN 值。interpolate(range, new_size): 对数据进行插值,以使数据大小与指定的大小匹配。4. 矩阵与数据范围函数
这些函数用于对矩阵进行操作,适用于多维数据。matrix():创建一个矩阵。rows(range):返回数据范围的行数。cols(range):返回数据范围的列数。rowSum(matrix):返回矩阵每行的和。colSum(matrix):返回矩阵每列的和。transpose(matrix):对矩阵进行转置。resize(matrix, rows, cols):调整矩阵的行数和列数。5. 图形与绘图函数
这些函数用于生成图形,包括散点图、线图、柱状图等。plotxy(range1, range2): 绘制 range1 和 range2 的散点图。plot(range, "type"): 绘制数据范围的图形,可以指定图形类型。setgraphoption(option, value): 设置图形的选项,如颜色、标题等。addtext(x, y, "text"): 在指定坐标添加文本。xlabel("x-axis label"): 设置 x 轴的标签。ylabel("y-axis label"): 设置 y 轴的标签。6. 文件操作函数
这些函数用于处理文件,包括读取、写入、加载等。load(file_path): 加载指定路径的文件。save(file_path): 将当前工作簿保存到指定路径。import(file_path): 从指定路径导入数据。export(file_path): 将数据导出到指定路径。fopen(file_path, mode): 打开文件(指定模式,例如 "r" 只读,"w" 写入)。7. 时间与日期函数
这些函数用于获取和处理时间与日期。now(): 获取当前的日期和时间。day(date): 获取日期中的天数部分。month(date): 获取日期中的月份部分。year(date): 获取日期中的年份部分。date(year, month, day): 创建指定日期。time(hour, minute, second): 创建指定时间。8. 字符串函数
这些函数用于处理字符串,例如连接、替换等。strlength(string): 返回字符串的长度。strfind(string, substring): 查找子字符串的位置。strsub(string, start, length): 提取子字符串。strreplace(string, old_substring, new_substring): 替换字符串中的子字符串。

6. 数据处理

你可以在 LabTalk 中对数据进行处理。例如,对数据进行求和、均值、最小值、最大值等计算。

// 计算列A的和、均值、最大值、最小值
double sumA = sum(r1);
double meanA = mean(r1);
double maxA = max(r1);
double minA = min(r1);// 输出结果
type "Sum of A: " + sumA;
type "Mean of A: " + meanA;
type "Max of A: " + maxA;
type "Min of A: " + minA;

7. 绘图

LabTalk 支持生成各种类型的图形,包括散点图、折线图、直方图等。可以通过编程实现自动绘图。

// 创建一个新的图形窗口
graph -b 1;  // -b 1 表示创建一个散点图// 绘制数据,假设我们使用了两个数据列 r1 和 r2
plotxy r1, r2;  // 绘制 r1 和 r2 之间的关系图

其他

// 定义工作簿和数据范围
range r1 = [Book11]sheet1!col(AE);
range r2 = [Book11]sheet1!col(AL);// 获取数据的总行数
int totalRows = r1.GetSize();
int segmentSize = totalRows / 100;  // 每段的大小// 遍历100段数据
for (int i = 1; i <= 100; i++)
{// 计算当前段的起始和结束行int segmentStart = (i - 1) * segmentSize + 1;int segmentEnd = i * segmentSize;// 确保不超出总行数if (segmentEnd > totalRows)segmentEnd = totalRows;// 计算当前段的均值double segmentSum = 0;for (int j = segmentStart; j <= segmentEnd; j++){segmentSum += r1[j];}double segmentMean = segmentSum / (segmentEnd - segmentStart + 1);// 在AL列中调整对应的值,减去均值for (int j = segmentStart; j <= segmentEnd; j++){r2[j] = r1[j] - segmentMean;}
}
http://www.xdnf.cn/news/358.html

相关文章:

  • rLLM - 使LLM的强化学习民主化
  • 用于数学定理和逻辑推理的符号系统
  • 【TVM教程】microTVM TFLite 指南
  • 从零开始学Python游戏编程31-类3
  • AI 数字短视频系统AI数字人源码开发:开启短视频行业发展新维度​
  • AUTOSAR图解==>AUTOSAR_SWS_E2ETransformer
  • 图像分类标注小工具
  • ABAP OLE
  • 『前端样式分享』联系我们卡片式布局 自适应屏幕 hover动效 在wikijs中使用 (代码拿来即用)
  • 使用Gone MCP 组件编写MCP Server
  • 《系统分析师-第三阶段—总结(一)》
  • LUN Capacity(Blocks) 是什么意思
  • Java项目—— 拼图小游戏(进阶版)
  • 表征流体作用力的参数及其特性
  • 2025年MathorCup数学应用挑战赛【B题成品论文第二版】(免费分享)
  • Allure测试报告按测试终端和测试类型智能分类查看
  • 杭州小红书代运营公司-品融电商:全域增长策略的实践者
  • Oracle 19c部署之手工建库(四)
  • Deno 包管理器:现代 JavaScript/TypeScript 运行时的新范式
  • 标题:民锋视角下的节奏演变逻辑:探寻市场波动的内在秩序
  • 网络互连与互联网3
  • SPWM-H桥逆变器工作原理
  • 关于防火墙
  • 解决 pip install tts 报错问题-—SadTalker的AI数字人视频—未来之窗超算中心
  • openEuler系统下源码编译安装Nginx实践教程
  • 磁盘文件管理与库
  • 深度学习3.2 线性回归的从零开始实现
  • 深度学习中的卷积神经网络
  • git -- 对远程仓库的操作 -- 查看,添加(与clone对比),抓取和拉取,推送(注意点,抓取更新+合并的三种方法,解决冲突,对比),移除
  • 模块内聚:理解和优化模块设计的关键