Octave 入门
Dr.P.J.G.Long
2005.7 月
剑桥大学工程系
按照Dr.PaulSmith 的Matlab 帮助文档编写
DepartmentofEngineeringUniversityofCambridge
2018/7/29
译者:卓泽滨
1
序言
计算,制图并编写简单的程序。
这个文档旨在介绍如何运用Octave 进行计算,希望本文能够帮助你学会如何使用Octave 进行
鉴于Matlab 也是一个经常被企业或学术界使用的工具,但它昂贵的注册认证却将很多学习者拒
之门外,幸运的是,开源的Octave1包与Matlab2的高度兼容性让使用者有机会学习到两者的参数使
为了实现同时学习octave 和matlab 这个一箭双雕的目的,本书详细地讨论了一些Octave 和
MATLAB 的不同之处。并在学习过程中,解释一些Octave 和matlab 的不同之处,以便让读者学习
matlab 的语法知识,由于篇幅关系,本书不能全部覆盖所有命令,许多不常见的命令会一笔带过,
当然,许多常见的通用的函数都会在本书给出的示例里一一展示。这些都是MDP3发行版的默认命
Draftversion0.1.0,pleaseemailanyerrorstomdp-support@eng.cam.ac.uk
用,体会到两者功能的强大。
令,详见附录文档。
1www.octave.org//octave 官网
2MATLAB°RTheMathworks,www.mathworks.com
3MultidisciplinaryDesignProject
2
目录
1
Octave 简介................................................................................................................................................. 6
1.1 什么是 Octave?..................................................................................................................................... 6
1.2
1.3
Octave 的不足有哪些?......................................................................................................................... 6
Octave 的目标用户.................................................................................................................................. 6
1.4 为什么 Octave 不用其它现有的入 C++等高级语言呢?..................................................................... 6
2 基础运算介绍.............................................................................................................................................. 7
2.1 如何打开 Octave..................................................................................................................................... 7
2.2 计算工具 Octave..................................................................................................................................... 7
2.3 内置函数.................................................................................................................................................. 7
3
Octave 环境................................................................................................................................................ 9
3.1 如何定义变量.......................................................................................................................................... 9
3.2 数据的存储格式.................................................................................................................................... 10
3.3 数字的表示和精准度............................................................................................................................ 10
3.4 加载和存储数据.................................................................................................................................... 11
3.5 重复之前的操作.................................................................................................................................... 11
3.6 如何获取帮助........................................................................................................................................ 11
3.7 如何终止一段命令的运行.................................................................................................................... 12
3.8 用分号取消结果输出............................................................................................................................ 12
4 数组与向量................................................................................................................................................ 14
4.1 创建一个向量........................................................................................................................................ 14
4.2 冒号的作用............................................................................................................................................ 15
4.3 显示一个大型的矩阵和向量................................................................................................................ 15
4.4 向量构造函数........................................................................................................................................ 15
4.5 从向量中提取元素................................................................................................................................ 16
4.6 向量运算................................................................................................................................................ 16
5 如何绘制图像............................................................................................................................................ 18
5.1 如何提高展示效果................................................................................................................................ 18
5.2 显示多张图象........................................................................................................................................ 19
3
5.3 手动缩放................................................................................................................................................ 20
5.4 保存图像................................................................................................................................................ 22
6
Octave 编程 I:脚本文件........................................................................................................................ 23
6.1 创建并编辑一个脚本文件.................................................................................................................... 23
6.2 运行、修改脚本文件............................................................................................................................ 24
6.3 如何记忆之前创建的脚本.................................................................................................................... 24
7 程序控制语句............................................................................................................................................ 26
7.1
7.2
7.3
7.4
if...else 条件语句....................................................................................................................................26
switch 选择语句.....................................................................................................................................27
for 循环...................................................................................................................................................28
while 循环...............................................................................................................................................28
7.5 精度........................................................................................................................................................ 29
8 Octave 变成 II:函数.............................................................................................................................. 30
8.1 示例 1:采用角度制的 Sine 函数....................................................................................................... 30
8.2 创建并使用函数.................................................................................................................................... 31
8.3 示例 2:阶跃......................................................................................................................................... 31
9 矩阵和向量................................................................................................................................................ 34
9.1 矩阵乘法................................................................................................................................................ 35
9.2 转置运算符............................................................................................................................................ 36
9.3 矩阵构造函数........................................................................................................................................ 36
9.4 创建一个复合矩阵................................................................................................................................ 38
9.5 表格矩阵................................................................................................................................................ 38
9.6 从矩阵中提取元素................................................................................................................................ 38
10 有关矩阵的基本函数............................................................................................................................ 40
11 解方程组................................................................................................................................................ 41
11.1 当 A 不可逆时解方程组.....................................................................................................................42
11.2 高斯消元法和 LU 分解...................................................................................................................... 42
11.3 矩阵除法和矩阵除法运算符.............................................................................................................42
11.4 奇异矩阵与秩.....................................................................................................................................43
4
11.5 病态矩阵.............................................................................................................................................45
11.6 超定系统的解:最小二乘法.............................................................................................................46
11.7 示例:三角测量.................................................................................................................................46
12 更多图象................................................................................................................................................ 47
12.1 在一个窗口上绘制多个图象.............................................................................................................48
12.2
3D 画图...................................................................................................................................................48
12.3 视图设置.............................................................................................................................................49
12.4 绘制 3D 曲面.......................................................................................................................................49
12.5 图片与视频.........................................................................................................................................51
13 特征向量与奇异值分解........................................................................................................................ 53
13.1
eig 函数...................................................................................................................................................53
13.2 奇异值分解.........................................................................................................................................54
13.3 逼近矩阵:改变矩阵的秩.................................................................................................................56
13.4
svd 函数..................................................................................................................................................56
13.5 “经济”奇异值分解............................................................................................................................ 57
14 复数........................................................................................................................................................ 59
14.1 “画出”虚数........................................................................................................................................ 60
14.2 求多项式的根.....................................................................................................................................60
15 附录-启动设置...................................................................................................................................... 62
16 深入阅读................................................................................................................................................ 63
16.1 鸣谢.....................................................................................................................................................63
5
1 Octave 简介
1.1 什么是 Octave?
1.2 Octave 的不足有哪些?
大影响。
1.3 Octave 的目标用户
符号的代数问题,但这并不能说明它一无是处,只是各大软件之间各有千秋罢了,另外,大多数的数
能够用来:处理联立方程、计算特征向量和特征值等。在许多实际工程问题中,数据往往是用向量或
Octave 是一个开源的用于数字计算和图象处理的交互式系统,Octave 是专门为矩阵计算设计的,它
者矩阵来表示,并用以上的方法处理数据的,所以Octave 的用途可见一斑。另外,利用Octave,我
们可以用不同的方式展示数据。(注释)Octave 还内置有自己的编程语言,允许用户自己编程,从而
扩展Octave 系统的功能。Octave 能够轻易的处理大维度的数据问题,让使用者能省出更多的时间来
试验和思考更广泛的问题。可以说说,Octave 是一个功能强大的,可编辑的,可处理图像的计算工具。
Octave 的起初是为设计大学课程的化学反应式设计的4,在Dr.J.W.Eaton 的带领下Octave 持续完善和
更新并在GNU 项目上取得一席之地。Octave 的功能现在已经被提升到能够与matlab 相媲美的地步。
Octave 是为用数值的形式解决数学问题而设计的工具,在计算的内存中进行数值计算的。也就是说它
未必总是能够对给出问题令人满意的解答,比如Octave 不能像Mathematica 和Maple 那样处理带有
学问题(特别是工程问题)实际上并没有简洁的符号解。因此这一瑕疵对Octave 的广泛使用并没太
许多科学家和工程师们都青睐Octave 和Matlab,学术界和工业上也都广泛采用它们进行数值运算或
者用来开发和测试一些数学算法。例如,NASA 就曾经用它们开发飞船接轨系统,JaguarRacing 也曾
利用它们分析来自他们团队的一级方程赛车的数据;Sheffield 大学也曾用过它们开发识别癌细胞的软
件……总之,利用Octave,很多数学问题的编程将会便得十分简单,数据展示也将会更加多样。
C++和其它工业标准的编程语言是为了编写不同类型的程序而设计的语言。然而,用C++解决复杂的
C++就捉襟见肘了,甚至很多人在用C++做算法开发的时候,先用Octave 编写程序并用Octave 进行
测试。总而言之,Octave 是为了解决这些问题、进行计算、展示结果而专门设计的,你可以从MDP
平台上得到Octave 的下载CD,或者从www.octave.org 上下载。
4www.octave.org/history.html
数学问题需要花费太多的时间在编辑程序上,并且一些具体的数学概念(如矩阵)或者在图形处理上
1.4 为什么 Octave 不用其它现有的入 C++等高级语言呢?
6
2 基础运算介绍
2.1 如何打开 Octave
2.3 内置函数
to
first,
read
2.2 计算工具 Octave
如果你是首次在 GUI 模式下打开 Octave 或者你打算在 DOS 窗口下打开,那么过一会系统就会打
开一个新的带有 Octave 的 logo 的窗口,并且终端将会显示出如下内容:
GNU Octave, version 2.1.57
Copyright (C) 2004 John W. Eaton.
This is free software; see the source code for copying conditions. There is ABSOLUTELY NO WARRANTY;
not even for MERCHANTIBILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, type ‘warranty’.
Octave was configured for “x86_64-w64-mingw32”.
Additional information about Octave is available at http://www.octave.org.
Please contribute if you find this software useful.
For more information, visit http://www.octave.org/help-wanted.html
Report
(but
http://www.octave.org/bugs.html to learn how to write a helpful report).
octave:1>
到这里,你已经成功打开 Octave 了。其中 octave :1>是命令提示符,你可以在这里输入你要的命
令。
please
bugs
些运算符号的优先级和平时我们在用的时候一样,
你可以在任何时候输入quit 退出Octave.
一个最简单的使用Octave 的方法是在命令行上输入数学命令,就像在一个普通的科学计算器那
样输入。所有的常用的算术表达式在Octave 上都可以被识别。例如,在命令行上输入2+2:即
octave1>2+2 并按下回车就会在终端上输出ans=4;最基础的算术运算符有+-*/和^(求幂),这
Octave 不仅包括基本的运算符号,也提供了几乎所有通用的数学函数。例如:
更多函数你可以参照表1
下面有一个更长的表达式:计算1.2sin(40°+ln(2.4^2)),打印出计算结果
octave:##>1.2*sin(40*pi/180+log(2.4^2))回车
1、乘号不能省略,例如1.2*sin。
2、对角度的运算都必须采用弧度制的方式运算,如上式中的pi/180 就用来将角度转为弧度,
pi 是一个已经命名了的变量,他的值是π,对于变量,我们将在下一节中进行具体的讨论。
3、对于自然对数ln 在Octave 中用log 表示。
5 函数的参数是通过值传递传递给函数进行计算的。在这个例子中,函数的参数就是常数 1,函数 exp 的作用是计算指
数 e^1,返回值(计算结果)就是 e1=2.7183。
7
octave5:##>exp(1)
ans=2.7183
ans=0.76618
值得注意的是:
如果能够灵活的运用这些函数和算数表达式,毫不夸张的说,你能用Octave 完成几乎所有的运
算。
cos
sin
tan
exp
log
log10
sinh
cosh
tanh
acos
acosh
asin
asinh
atan
atan2
atanh
abs
sign
round
floor
ceil
fix
rem
底数是 10 的对数
Cos 函数(弧度制)
Sin 函数(弧度制)
Tan 函数(弧度制)
指数函数,底数为自然数 e(ex)
自然对数(底数是 e,区别于 log10)
Hyperbolicsine
Hyperboliccosine
Hyperbolictangent
Inversehyperboliccosine
Inversehyperbolicsine
Two-argumentformofinversetangent
Inversehyperbolictangent
符号函数(−1or+1)
4 舍5 如取整
向下取整(towardsminusinfinity)
向上取整(towardsplusinfinity)
Remainderafterintegerdivision
表1:基础运算函数
Table1:Basicmathsfunctions
靠近 0 的方向取整
反正切函数
反余弦
反正弦
取绝对值
8