MATLAB - GNU Octave 教程



GNU Octave 是一种类似于 MATLAB 的高级编程语言,并且与 MATLAB 大部分兼容。它也用于数值计算。

Octave 与 MATLAB 具有以下共同特性:

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

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

MATLAB 与 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 将显示以下 3D 图形:

3-D Map in Matlab

不兼容示例

尽管 Octave 中提供了 MATLAB 的所有核心功能,但某些功能(例如微积分中的微分和积分)在两种语言中的实现并不完全相同。本教程尝试提供两种类型的示例,其中它们的语法有所不同。

考虑以下示例,其中 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 将绘制图形:

Definite Integral

显示以下结果:

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

但是,要在 Octave 中获取相同曲线的面积,您必须使用 **symbolic** 包,如下所示:

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));
广告