跳转到内容

MATLAB 编程/GNU Octave

来自维基教科书,开放的书籍,开放的世界


Octave 是一个免费的计算机程序,用于执行数值计算(作为 GNU 项目的一部分创建),它与 MATLAB 大致兼容。

该项目始于 1988 年。起初它打算作为化学反应器设计课程的辅助工具。约翰·W·伊顿于 1992 年开始实际开发。第一个 Alpha 版本可以追溯到 1993 年 1 月 4 日,1994 年 2 月 17 日发布了 1.0 版本。

这个名字与音乐无关。它是 Octave 作者之一的前任教授的名字,该教授以能够快速找到数值问题的良好近似值而闻名。

技术细节

[编辑 | 编辑源代码]
  • Octave 使用 STL 库用 C++ 编写。
  • Octave 具有一个解释 Octave 语言的解释器。
  • Octave 本身可以通过动态加载模块进行扩展。
  • Octave 解释器与 gnuplot 和 Grace 软件协同工作以创建绘图、图形和图表,以及保存或打印它们。

Octave 语言

[编辑 | 编辑源代码]

Octave 语言是一种解释型编程语言。它是一种结构化编程语言(C 语言就是一个例子),支持许多常见的 C 标准库构造,并且可以扩展以支持 UNIX 系统调用和函数。但是,它不支持按引用传递参数。

Octave 程序由一系列函数调用或脚本组成。该语言基于矩阵,并提供各种矩阵操作函数。它不是面向对象的,但支持数据结构。

它的语法与 MATLAB 非常相似,仔细编写脚本将使其能够在 Octave 和 MATLAB 上运行。

由于 Octave 是根据 GNU 通用公共许可证发布的,因此可以免费复制和使用。该程序在大多数 Unix 和类 Unix 操作系统以及 Microsoft Windows 上运行。

显著特点

[编辑 | 编辑源代码]
  • 命令和变量名补全

在命令行中输入 TAB 键会导致 Octave 尝试补全变量、函数和文件名。Octave 使用光标前的文本作为要补全的名称的初始部分。

  • 命令历史

在交互式运行时,Octave 会将输入的命令保存在内部缓冲区中,以便可以将其调用和编辑。

  • 数据结构

Octave 包括有限数量的支持,用于在结构中组织数据。例如

octave:1> x.a = 1; x.b = [1, 2; 3, 4]; x.c = "string";
octave:2> x.a
x.a = 1
octave:3> x.b
x.b =

  1  2
  3  4

octave:4> x.c
x.c = string
  • 短路布尔运算符

Octave 的 `&&' 和 `||' 逻辑运算符以短路方式评估(类似于 C 语言中的相应运算符),并且与逐元素运算符 `&' 和 `|' 的工作方式不同。

  • 自增和自减运算符

Octave 包含 C 语言的自增和自减运算符 `++' 和 `--',包括前缀和后缀形式。

  • 展开保护

Octave 支持有限形式的异常处理,该处理模拟了 Lisp 的展开保护形式。展开保护块的一般形式如下所示

unwind_protect
  body
unwind_protect_cleanup
  cleanup
end_unwind_protect
  • 可变长度参数列表

Octave 拥有一个处理接受未指定数量参数(无明确上限)的函数的机制。例如

以下是使用新语法打印标题和未指定数量值的函数示例

function foo (heading, ...)
  disp (heading);
  va_start ();
  while (--nargin)
    disp (va_arg ());
  endwhile
endfunction
  • 可变长度返回值列表

Octave 还拥有一个处理返回未指定数量值的函数的机制。例如

function [...] = foo (n)
  for i = 1:n
    vr_val (i);
  endfor
endfunction

参考文献

[编辑 | 编辑源代码]
华夏公益教科书