猜你喜欢
IgorPro实用教程(图表绘制数据分析与程序设计)/清华开发者书库

IgorPro实用教程(图表绘制数据分析与程序设计)/清华开发者书库

书籍作者:贾小文 ISBN:9787302493181
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:5854
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书介绍Igor Pro的基本使用技巧和数据分析处理的一般方法,全面涵盖Igor Pro基本操作、图表绘制、命令行、数据分析拟合和程序设计等方面内容。在内容设计上以实用性为目的,突出图表绘制、数据拟合和程序设计等数据处理中需要的内容模块。书中配有大量的示例代码,以便读者在学习的过程中参考和借鉴。

全书共分为7章和1个附录,第1章介绍Igor Pro的基本对象和基本使用,突出命令行的特色。第2章介绍图表的绘制和设置中涉及的概念和方法,包括曲线、二维数据和三维数据的绘制。第3章介绍数据拟合的技巧和方法,包括简单的调用菜单拟合到复杂的自定义函数拟合,并详细讨论Igor Pro的一些高级拟合技巧。第4章介绍一些常见的数据处理方法,如插值、傅里叶变换、解方程等。第5章介绍程序设计的基本概念、Igor Pro语法环境以及命令行程序的设计。第6章介绍窗口界面程序的设计方法以及窗口程序设计中可能用到的各种技巧。第7章介绍一些高级的程序设计方法,如多线程、钩子函数、计算机硬件操作等复杂用法。附录介绍本书所用术语、Igor Pro快捷键和*新版本的特点。

本书可作为高等院校、科研机构等相关单位从事实验教学或者实验科学研究的教师、工程师的参考书籍,也可作为高年级本科生和研究生实验数据分析和处理的参考书籍。


作者简介

贾小文 物理学博士,长期从事Igor Pro实验数据处理的研究和程序设计工作。多年来,利用Igor Pro编写了大量的实验数据处理程序,具有丰富的实践经验和娴熟的程序设计能力。编写的角分辨光电子能谱实验数据处理程序被多个实验室、单位采用。热爱编程及数据分析技术,熟练掌握C++、C#等程序设计语言,曾独立开发大学生基础实验在线考试系统、RTKGPS自动驾驶考试系统。

前言
前言
  《Igor Pro实用教程——图表绘制、数据分析与程序设计》终于要和读者见面了。此时,我内心非常激动。
  这里首先介绍本书创作的缘由。
  在笔者就读大学期间,还未听说过Igor Pro。当时,我处理数据用的是Turbo C 3.0。由于没有意识到数据处理软件这种工具的存在(比如最基本的Excel),我觉得数据处理就是编程。以至于后来,我甚至构建了一个雄伟的计划: 利用Turbo C设计一个数据处理软件,基本功能是绘图和最小二乘法,甚至连软件架构都写好了。遗憾的是,因为没有计算机,加之学校的机房上机费太贵,这个计划最终被搁浅了(幸亏如此)。随着升入高年级,实验课结束,这个计划终于被彻底忘记了。不过,这种编程处理数据的思路最终还是让我受益匪浅。本书介绍的Igor Pro就是最适合通过编程处理数据的工具。
  上研究生时,实验数据处理这个问题再次出现。不过我发现不能再继续用Turbo C 3.0了,因为实验室所有的人都在用Igor Pro,所以我开始了Igor Pro的学习和使用。学习Igor Pro的经历是值得回顾的。
  记得第一次看到这个软件,感觉很茫然。
  按照以往的经验,不懂的内容可以通过Google搜索。可是在Igor Pro的学习过程中,我从来没有用过一次Google或者百度,甚至连这种意识都没有(我想本书的读者和我也是一样的)。原因很简单,网上没有任何关于Igor Pro的学习资料。我能做的,就是向同实验室的人请教,自己在挫折中慢慢摸索; 阅读现有的代码,掌握Igor Pro的基本使用方法。这里我不得不感谢我的导师周兴江研究员,他不仅仅是一位在超导研究领域取得卓越成就的科学家,也是一位出色的Igor Pro编程大师。我今天关于Igor Pro的认识,应该说就是从研究他的代码开始的。
  学习的经历是艰辛的。任何一个小问题的解决都不容易。现在回顾起来,我发现走了很多弯路,不仅仅是学习的弯路,还有使用的弯路。当时使用的很多方法其实非常笨拙,效率非常低。比如一个最基本的问题,当时程序运行的速度比较慢,绘制一幅费米面的图需要半分钟左右,大家都认为是Igor Pro的问题。后来我发现不是,是我们没有理解Igor Pro下的程序设计机制,没有搞清楚Proc和Function的关系。在搞清楚这个问题后,我对所有的程序进行了一次彻底的升级。然后突然发现,以前几分钟的计算现在一眨眼就可以完成。很难想象我们一直在这种低效率的工作状态下使用Igor Pro很多年,仅仅是因为不了解Proc和Function所致!
  诸如此类的问题非常多,如图表绘制、数据拟合、算法设计等,不胜枚举。很显然,要做好这些工作,需要很好地了解Igor Pro。
  遗憾的是Igor Pro的学习资料太少了。Igor Pro其实是一款非常优秀的数据处理软件,特别是处于大数据时代的今天,它能将编程与数据可视化完美地融为一体,既具有Python、R等脚本编程语言的可扩展性,又具有Origin等数据可视化工具的方便易用性,十分难得。但由于软件的语言(英语)、需要编程的特性以及用户使用群体(主要集中在国外)等原因,Igor Pro一直未被广大用户所了解。这样造成的后果就是没有人去讨论和贡献自己对Igor Pro的心得和使用技巧。Igor Pro本身的软件文档写得非常好,但是作为一个手册,其实是不适合初学者的,只有在一定的基础上看软件文档,才有效果。初学者直接看文档,很容易感到迷茫。
  由于学习资料的匮乏,很多人,特别是刚进入实验室的人员对Igor Pro望而生畏,转而去选择其他的工具。其实,Igor Pro更适合他们,更适合他们处理数据。于是,Igor Pro的潜在使用者就这么流失了。反过来,这又影响了后来的人去选择Igor Pro。
  虽然有所谓酒香不怕巷子深的古训,但是,如果酒是香的,为什么不能将它放到浅一点的巷子里呢?好东西应该是被大众所共享的,而不应只属于个别“资深酒客”。
  在这么多年使用Igor Pro的过程中,在帮助他人解决Igor Pro的一些问题时,我对Igor Pro的认识也越来越深刻。我发现,Igor Pro能做的其实远比我们想象的多。但是,很多人,包括在实验室里天天使用Igor Pro的人们,却没有意识到,其实他们使用Igor Pro的水平并不高(这当然是完全可以理解的,由于更专注于科学研究,他们不可能在这上面花太多精力)。
  所有的这些,促使我决定编写一本关于Igor Pro使用的书籍,把我这么多年来对Igor Pro的使用心得和经验总结出来,公布于众。所谓授人以鱼,不如授人以渔。我的目的就是希望读者在使用Igor Pro遇到困惑时,能知道去哪儿找到解决问题的方法,少走一些弯路,而不是只寄希望于求助别人或者浪费很多的时间。同时,也更希望读者能利用本书中提到的知识提高数据处理效率,节约时间和精力。当然,我知道本书离这个目标还很远,但至少这是一个好的开始。
  本书真正的写作始于两年前。这个过程和我学习Igor Pro的经历一样,也是艰辛的: 没有资助,缺乏参考资料只能利用业余时间创作。所有的一切都是靠兴趣、靠对Igor Pro的热爱在支撑。当然这很正常,任何一个新的领域在刚开始时都是这样的。既然还没人做这件事情,那么就从我开始吧。
  本书的体例结构都是经过精心设计的,目的就是突出实用性。各章节结构具有相对的独立性,每一小节一般都对应于Igor Pro某个方面的使用。建议读者仔细阅读第1章和第5章,前者是Igor Pro工作原理的基础,后者是程序设计的基础。其他各章节可在需要的时候选择性阅读。另外,读者在阅读本书时,可结合Igor Pro自带的软件手册进行学习,这样会获得事半功倍的效果。
  在完成本书的过程中,我曾与周兴江研究员、谢卓晋博士、物理所超导实验室SC7组进行过多次讨论,书中很多创作的灵感都来源于这些讨论,在此表示谢意。
  清华大学出版社的盛东亮编辑在本书出版的过程中给了我很大的帮助。盛编辑对新事物的开放和支持态度,对教育科技知识推广的责任心,值得敬佩。这里表示谢意。
  最后,由于本书是此领域的第一本书,也限于我的水平,书中难免存在错误之处。在这里恳请读者在阅读过程中发现错误能及时指出,以便我及时修正。
  贾小文
  2018年1月于天津
目录
第1章Igor Pro基本介绍
1.1Igor概述
1.1.1特色定位
1.1.2安装和使用
1.1.3基本界面
1.1.4菜单
1.1.5数据浏览器
1.1.6数据表格
1.1.7命令行窗口
1.2Igor中的基本对象
1.2.1wave
1.2.2图(Graph)
1.2.3表格(Table)
1.2.4页面布局(Page Layout)
1.2.5变量(Variable)
1.2.6数据文件夹(Data Folder)
1.2.7记事本(Notebook)
1.2.8程序面板(Control Panel)
1.2.9三维图(3D Plot)
1.2.10程序(Procedure)
1.2.11命令和函数
第2章图表绘制
2.1曲线
2.1.1绘制曲线
2.1.2添加新曲线
2.2图表的设置和美化
2.2.1设置绘图区域
2.2.2设置外观
2.2.3设置坐标轴
2.2.4设置图注
2.2.5向曲线添加自定义形状
2.2.6样式脚本
2.3类别图
2.3.1类别图的绘制和设置
2.3.2类别图的设置
2.4二维wave绘制
2.4.1Image的绘制
2.4.2Image的设置
2.4.3Contour的绘制
2.4.4Contour的设置
2.4.5Waterfall的绘制
2.4.6Waterfall的设置
2.4.7Surface的绘制
2.4.8Surface的设置
2.5三维wave的绘制
2.5.1三维图形绘制的概念
2.5.2三维图形的绘制
2.6输出图片
第3章数据拟合
3.1拟合概述
3.1.1拟合的基本原理和步骤
3.1.2基本拟合
3.1.3快速拟合及结果查看
3.1.4自定义拟合
3.1.5数据拟合对话框详解
3.2拟合公式模型
3.2.1内置拟合公式
3.2.2普通自定义拟合函数
3.2.3保存自定义拟合函数
3.2.4自定义拟合函数的格式
3.3拟合命令详解
3.3.1拟合命令参数详解
3.3.2常用拟合命令选项
3.3.3限定拟合参数范围
3.4高级拟合技巧
3.4.1隐函数拟合
3.4.2复杂自定义拟合函数
3.4.3all at once拟合
3.4.4使用结构体类型变量参数的拟合函数
3.4.5拟合过程中的特殊变量
3.4.6多峰拟合
3.4.7拟合的几个例子
第4章数据处理
4.1插值
4.1.1基本插值方法
4.1.2插值与均匀数据
4.1.3逆插值
4.1.4曲线平滑
4.2数值计算与统计
4.2.1微分和积分
4.2.2wave统计信息
4.2.3求解数值方程
4.2.4微分方程求解
4.2.5直方图
4.2.6排序
4.3数学变换
4.3.1傅里叶变换
4.3.2傅里叶变换窗
4.3.3希尔伯特变换
4.3.4卷积
4.3.5相关
4.4图像分析
4.4.1Lookup Table方法
4.4.2直方图均衡化
4.5随机数生成
第5章程序设计
5.1程序设计概述
5.1.1程序窗口
5.1.2程序窗口说明
5.1.3编译程序
5.1.3程序代码构成
5.1.4程序类型
5.2基本语法
5.2.1表达式和命名规则
5.2.2变量和常量
5.2.3Structures
5.2.4流程控制语句
5.2.5函数
5.2.6程序子类型
5.2.7参数传递
5.2.8默认参数
5.2.9注释和代码风格
5.3程序设计技术
5.3.1Include指令
5.3.2Pragma参数
5.3.3IndependentModule
5.3.4Execute命令
5.3.5条件编译
5.3.6函数引用
5.3.7访问全局对象
5.3.8wave引用
5.3.9$运算符
5.3.10自动创建变量
5.3.11调试程序
第6章窗口程序设计
6.1窗口程序概述
6.1.1创建一个简单的窗口程序
6.1.2窗口程序构成
6.1.3窗口生成脚本
6.1.4控件命令
6.2窗口控件
6.2.1Button按钮
6.2.2CheckBox复选框
6.2.3SetVariable文本框
6.2.4ListBox列表框
6.2.5PopupMenu下拉列表框
6.2.6Slider滑动条控件
6.2.7ValDisplay数值显示控件
6.2.8TabControl控件
6.2.9CustomControl自定义控件
6.2.10TitleBox和GroupBox控件
6.2.11控件操作
6.2.12获取控件信息
6.2.13控件结构体变量类型应用
6.3窗口设计
6.3.1Pictures详解
6.3.2创建Pictures
6.3.3窗口设计
6.3.4Graph和Panel的区别
6.4菜单
6.4.1菜单概述
6.4.2创建动态菜单
6.4.3系统右键快捷菜单中添加菜单项
6.4.4特殊菜单项
6.4.5创建弹出式菜单
6.4.6菜单项中的特殊字符
第7章高级程序设计
7.1程序中的free对象
7.1.1free wave
7.1.2free data folder
7.2多线程技术
7.2.1简单多线程技术
7.2.2free对象与多线程
7.2.3多线程编程
7.2.4后台任务
7.2.5抢占式多任务
7.2.6定时器和多线程
7.3运行时交互
7.3.1简单的输入数据框
7.3.2利用PauseForUser创建输入对话框
7.3.3程序进度条
7.4钩子函数
7.4.1用户自定义钩子函数
7.4.2窗口钩子函数
7.4.3依赖
7.5数据采集
7.5.1FIFO与Charts
7.5.2串口读写
7.5.3XOP扩展
7.6多媒体
7.6.1播放声音
7.6.2视频播放和创建
7.7错误处理
7.7.1程序错误退出
7.7.2trycatchendtry
7.7.3Igor错误代码和描述
7.8文件读写
7.8.1文件读写函数和命令
7.8.2文件读写示例
7.9初始化技术
7.9.1新建实验文件时初始化
7.9.2打开窗口程序时初始化
7.10其他编程技术
7.10.1计时
7.10.2Cursor编程
7.10.3字符串及正则表达式
附录A本书术语说明
附录BIgor常用快捷键
附录CIgor Pro 7新特性