GNU Octave,一个免费的与Matlab语法相容的开源科学计算及数值分析的工具

本文来自维基百科 http://zh.wikipedia.org/zh-cn/GNU_Octave

Octave Sombrero.svg

一个免费的与Matlab语法相容的开源科学计算及数值分析的工具 开发者John W. Eaton

Octave 是一个旨在提供与Matlab语法相容的开放源码科学计算及数值分析的工具;它同时也是GNU计划成员之一。

该软件肇始于1988年,其初衷是提供一些化学反应设计课程的辅助工具。

系统性开发则是由John W. Eaton在1992年接手才开始的。 第一个alpha测试版是在1993年1月4日释出,1.0稳定版则是在同年2月17日释出。最新的3.2.4稳定版在2010年1月28日释出。

其名称与音乐上的八度没有直接关系。该软件乃是以一位早期开发群的成员,同时也以敏于处理数值逼近问题著称的前教授命名。

技术细节

  • Octave是以C++的标准模板函式库编程而成。
  • Octave有自己Octave语言直译器。
  • Octave可以动态外挂模组扩充。
  • Octave的直译器可用gnuplot及Grace产生图表及打印。

Octave语言

Octave语言是直译式及结构化(类于C语言)的编程语言,支援许多C语言的标准函式库提供的功能,同时可以使用UNIX的系统呼叫以进行扩充增进功能,但不支援以引用的方式传递参数。

Octave程式包含了许多脚本函式呼叫,它本身是以矩阵为基础并提供许多矩阵的操作函式。它并非面向对象编程语言但支援资料建构

它的语法基本上与Matlab一致,严谨编写的程式码应同时可在Matlab及Octave执行。

由于Octave是以GNU通用公共许可证授权,所以可以自由地复制、流通与使用。Octave可在大部份的类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例外处理模式。通常unwind_protect表述区段可表示如下:

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

Octave提供用于处理未指明参数个数时的函式呼叫机制:利用特殊的varargin作为参数来呼叫函式。

function s = plus (varargin)
  if (nargin==0)
   s = 0;
  else
   s = varargin{1} + plus (varargin{2:nargin});
  endif
endfunction
变量长度回传表列

单一函式可以varargout这一特殊回传值来回传任意数目的值,例如:

function varargout = multiassign (data)
  for k=1:nargout
   varargout{k} = data(:,k);
  endfor
endfunction

MATLAB相容性

Octave最初便是模彷Matlab而设计,自然与Matlab有许多相同的功能。 这也使得一部分Matlab程序可以直接或经过少量修改在Octave上运行,一些软件开发小组也使用两者兼容的语法,直接开发可以同时在Matlab和Octave使用的程序。

  1. 矩阵为基础资料型别之一
  2. 内建支援复数
  3. 内建功能强大的数学函式及可扩充的函式库
  4. 使用者可自定函式

以上内容来自维基百科 http://zh.wikipedia.org/zh-cn/GNU_Octave

发表评论?

0 条评论。

发表评论