GNU Octave教程

什么是GNU Octave?

GNU Octave是一种类似MATLAB的高级编程语言,基本上与MATLAB兼容,也用于数值计算。

Octave与MATLAB−有以下共同特征:

  • 矩阵是基本的数据类型
  • 内置对复数的支持
  • 内置了数学函数和库
  • 支持用户定义的函数

GNU Octave是免费可自由再分发的软件。你可以根据自由软件基金会发布的GNU通用公共许可证(GPL)条款重新发布和/或修改它。

Octave界面
Octave界面

MATLAB vs Octave

大多数MATLAB程序以Octave运行,但有些 Octave 程序可能不能在MATLAB中运行,因为 Octave允许一些MATLAB不允许的语法。

例如,MATLAB只支持单引号,但是Octave在定义字符串时同时支持单引号和双引号。如果你正在寻找一个关于Octave的教程,那么请从头学习这个教程,它涵盖了MATLAB和Octave。


兼容的例子

本教程中涉及的几乎所有示例都与MATLAB以及 Octave 兼容。让我们尝试下面的例子在MATLAB和Octave产生相同的结果,没有任何语法变化 :

这个例子为函数 g = xe-(x2 + y2) 创建了一个3D表面图。创建脚本文件并键入以下代码:


[x,y] = meshgrid(-2:.2:2);
g = x .* exp(-x.^2 - y.^2);
surf(x, y, g)
print -deps graph.eps

运行该文件时,MATLAB将显示以下3-D映射:

MATLAB3-D映射

不相容的例子

虽然MATLAB的所有核心功能都是Octave的,但是有一些功能,比如微分和积分,在两种语言中并不完全匹配。本教程尝试给出这两种类型的示例,它们在语法上有所不同。

考虑下面的例子,MATLAB和Octave使用不同的函数得到曲线的面积:  f(x) = x2 cos(x), −4 ≤ x ≤ 9 。下面是MATLAB版本的代码:


f = x^2*cos(x);
ezplot(f, [-4,9])
a = int(f, -4, 9)
disp('Area: '), disp(double(a));

运行:

MATLAB版本

输出结果:


a =
8*cos(4) + 18*cos(9) + 14*sin(4) + 79*sin(9)
 
Area: 
   0.3326

但要在Octave里给出相同曲线的面积,就必须使用符号包,如下所示:


pkg load symbolic
symbols

x = sym("x");
f = inline("x^2*cos(x)");

ezplot(f, [-4,9])
print -deps graph.eps

[a, ierror, nfneval] = quad(f, -4, 9);
display('Area: '), disp(double(a));

更多Octave和Matlab的对比

Octave和Matlab的区别






公众号

关注公众号,获取一手资讯

“ GNU Octave教程 ” comments 0

评论/回复

电子邮件地址不会被公开。 必填项已用*标注