MATLAB GNU Octave教程

2018-08-14 16:50 更新

GNU Octave 是一種高級(jí)編程語(yǔ)言,像 MATLAB,它主要是用 MATLAB 兼容。

GNU Octave 也可以用來(lái)進(jìn)行數(shù)值計(jì)算,還有豐富的 C++ 接口可以讓用戶(hù)編程時(shí)調(diào)用。

Octave 和 MATLAB 共同的特點(diǎn)

  • 矩陣的基本數(shù)據(jù)類(lèi)型

  • 它內(nèi)置支持復(fù)數(shù)

  • 它具有內(nèi)置數(shù)學(xué)函數(shù)和庫(kù)

  • 它支持用戶(hù)自定義功能

GNU Octave 是自由可再分發(fā)的軟件,這意味著你可以在自由軟件基金會(huì)發(fā)布的GNU通用公共許可證(GPL)的條款下重新分配或?qū)λM(jìn)行修改。

MATLAB 和 Octave

極大一部分的 MATLAB 程序運(yùn)行在 Octave,但是有一些 Octave 支持的語(yǔ)法是 MATLAB 不支持的,所以這些 Octave 程序可能無(wú)法正常運(yùn)行。

就好比 MATLAB 只支持單引號(hào),但是Octave能夠支持單,雙引號(hào)來(lái)定義字符串

兼容的示例

本教程中涉及的幾乎所有的例子都是用 MATLAB 以及 Octave 兼容。

在 MATLAB 和 Octave 試試下面的例子,沒(méi)有任何語(yǔ)法的變化并且會(huì)有相同的結(jié)果產(chǎn)生:

以下例子中將建立一個(gè)3D表面地圖函數(shù) g = xe-(x2 + y2) 。

在MATLAB中建立一個(gè)腳本文件,并輸入下述代碼:

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

運(yùn)行該文件,顯示出的3-D地圖:

不兼容的例子

MATLAB 中有一部分功能是不能夠在 Octave 中使用的,舉幾個(gè)例子:微分和積分積分,無(wú)論是從語(yǔ)言還是其他角度,這并不完全匹配。

下面給出兩種類(lèi)型的例子,以此顯示他們的語(yǔ)法不同的地方。

在下面的例子中 MATLAB 和 Octave 使不同功能的使用面積曲線(xiàn): f(x) = x2 cos(x) for ?4 ≤ x ≤ 9。

我們先來(lái)看看 MATLAB 中的代碼:

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

運(yùn)行該文件,MATLAB繪制如下圖表:

顯示結(jié)果如下:

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

在 Octave 中使用相同的面積曲線(xiàn),必須使用符號(hào)包如下:

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


以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)