-
Notifications
You must be signed in to change notification settings - Fork 0
octave
- 解释型语言,与 MATLAB 语言兼容,但语法有一些扩展
- 数值计算工具,还有音频、图像等信号处理工具箱
- 自由软件,是 GNU 项目的一部分。主页在此。
- 绘图使用了外部工具 gnuplot,绘图标注支持 LaTeX 数学公式语法。3.8 版本起绘图默认使用 FLTK 控件。
-
返回函数句柄。Matlab 可以让函数返回一个函数句柄(包括嵌套函数、匿名函数),Octave 中可以返回匿名函数,3.8 版本起支持嵌套函数。
-
单元测试:MATLAB 自 R2013a 起,引入了内置的单元测试框架。旧版本用户可以用 xUnit(已无进一步开发计划)。查看更多单元测试框架。
-
异常/错误处理:Octave 支持 try catch 异常处理,在 catch 中使用
lasterr
,lasterror
以获取错误信息。MATLAB 中这种方式仍然可用,但不再鼓励。这是因为 MATLAB 实现了面向对象风格的 MException 类。Octave 3.8 版本对命名异常提供有限支持。 -
并行处理。Octave 可以识别 parfor 关键词,但并不会真正地并行处理。Octave 没有 matlabpool 函数。
-
绘图细节。Matlab 的 axis/xlim/ylim/zlim 函数允许使用 Inf 代表自动设置坐标轴区间端点,Octave 3.8 及以前版本没有这一特性,代码库中已经修复。
语法:
- Unix 风格的 shebang,可执行脚本
- 更多的 C 风格的运算符,如
++
,+=
等 - 字符串常量的引号除了可以用
'
外,还可以用双引号"
- 注释除可以以
%
开始外,还可以用#
开始。
函数:
print_usage
fflush
localtime
-
stdout
,stderr
,stdin
-
columns
,rows
(Matlab 中用size(A, DIM)
替代) -
assert
中条件判断可以是向量逻辑表达式,Matlab 中只能是标量。 -
e
得到自然对数的底数 (e=2.71828...),或者全 e 的矩阵。
绘图:
- 有 fltk 和 gnuplot 两个后端,使用
graphics_toolkit
函数进行切换。 - 可以用字符 '0' 到 '6' 指定线条、点的颜色。
输出缓冲:Matlab 的 fopen
系列函数默认情况下会自动 flush,disp
也会。Matlab 的 fopen
提供 W
A
模式禁用自动 flush,这可以用来提升文件读写性能。不过有报告说 disp 也会被缓冲,可以用 system_dependent(7)
禁用,这可能和系统相关。Matlab 默认未启用命令行窗口的分页查看。Octave 中,默认不会自动 flush,需要手动使用 fflush
函数。在打印到标准输出时,默认使用分页查看器,会有缓冲,因此无法即时看到数据进度,可以在命令行界面用 more off
临时禁用分页。
绘图对数坐标:Matlab 中如果在 semilogx 等绘图之前使用了 hold on,绘图将保持使用线性坐标。要使结果为对数坐标,需要先 semilogx 再 hold on,或者最后 set(gca, 'xscale', 'log')
,详见本链接。使用 polar 函数绘制极坐标图时也有类似现象。Octave 中先 hold on 再 semilogx 结果会是对数坐标。
a = [1,
2]; % a is a column vector!
a = [1
2]; % a is a column vector!
a = [1,...
2]; % a is a row vector.
a = [1 ...
2]; % a is a row vector.
a = [1...
2]; % syntax error!
Octave 3.6.4 版本使用 gnuplot 后端绘图时,不识别虚线、点划线等线型;换用 fltk 后端则可以。
Matlab 标注中可用的 TeX 符号列表(默认隐藏,点击 TeX Character Sequence Table 链接可见)
本作品采用知识共享署名-相同方式共享 4.0 Unported许可协议进行许可。