Octave (简体中文)

From ArchWiki
翻译状态:本文是 Octave翻译。上次翻译日期:2020-07-25。如果英文版本有所更改,则您可以帮助同步翻译。

Tango-preferences-desktop-locale.png本文或本节需要翻译。要贡献翻译,请访问简体中文翻译团队Tango-preferences-desktop-locale.png

附注: Some content is not translated.(在 Talk:Octave (简体中文)# 中讨论)

援引自Octave 官网:

GNU Octave 是一种解释性的高级程序设计语言, 主要应用在数值计算领域。其拥有线性和非线性问题求解,以及执行其他数值分析的能力,还为数据可视化与数据操作提供了丰富的图形功能。 Octave通常的使用方式是交互式命令行,但其也可以用来编写非交互式程序。 Octave语言与Matlab非常相似,因此在两个平台编写的大部分程序都可以很容易移植。

安装

安装软件包 octave:

# pacman -S octave

打开GUI界面octave --gui ,或者打开命令行界面octave-cli

其他可供选择的图形界面

默认的 octave 图形界面 已经包含在了 octave 软件包中。除此之外,你还可以选择使用下列非官方的图形界面:

  • Cantor — 一个图形用户界面,其后端的数学运算可以由以下软件之一提供 (Scilab, Maxima, Octave, R, Julia and others).
https://edu.kde.org/cantor/ || cantor
  • JupyterLab — 一个基于浏览器的交互式环境,支持多种语言作为后端,也包括Octave。
https://jupyterlab.github.io/jupyterlab/ || jupyterlab+jupyter-octave_kernelAUR

Octave-Forge

Octave提供一系列的外部包,类似于Matlab的工具箱, 参见 Octave-Forge.完整包列表参见这里.

这些外部包可以 #通过Octave自带安装器安装 或者 #通过AUR安装.

通过Octave自带安装器安装

外部包可以通过Octave自带安装器进行管理。 一般情况下他们会被安装到 ~/octave, 当使用-global选项的时候会被安装到一个系统目录。

安装一个外部包

octave:1> pkg install -forge packagename
注意: 一些外部包, 例如 control, 需要 gcc-fortran 包来进行编译和安装

卸载一个外部包:

octave:3> pkg uninstall packagename

一些包可以被Octave自动加载,对于那些没有自动加载的包:

octave:4> pkg load packagename

或者

octave:5> pkg load all

通过pkg list可以查看被加载的包,已加载的包会带有星号.

一个确保所有包都在Octave启动时加载的方法:

/usr/share/octave/site/m/startup/octaverc
## System-wide startup file for Octave.
##
## This file should contain any commands that should be executed each
## time Octave starts for every user at this site. 
 pkg load all

通过AUR安装

一些包可以在AUR (search packages)中找到.

适用于 Arch 的 Octave-forge 可以通过 Octave-forge helper scripts for Archlinux 实现半自动更新.

绘制图表

Qt是默认的绘图后端:

>> available_graphics_toolkits
ans =
{
  [1,1] = fltk
  [1,2] = qt
}
>> graphics_toolkit
ans = qt

你也可以选择FLTK,或者gnuplot然后通过以下命令运行:

>> graphics_toolkit("gnuplot");

将它添加进~/.octaverc以使变更一直有效.

读取电子表格

你可以使用odsread或者xlsread打开.ods, .xls以及.xlsx格式的文件,需要octave-ioAUR:

octave:1> odsread('myfile.ods');
octave:1> xlsread('myfile.xls');
octave:1> xlsread('myfile.xlsx');

转换成CSV格式

也可以先使用LibreOffice Calc (不超过1024列)或Calligra Sheets(calligra,不超过32768列)把电子表格转换.csv格式.

待转换完成后您可以使用Octave内置函数csvread来读取.csv格式文件:

octave:1> csvread('myfile.csv');

Troubleshooting

Zsh Undecodable Token

If you get error

undecodable token: b(hex)[23m

when printing, install grml-zsh-config and relogin.

vi Mode Undecodable Token

Users with their .inputrc configured for vi-mode, for example, as

~/.inputrc
$include /etc/inputrc
set editing-mode vi
$if mode=vi

set show-mode-in-prompt on
set vi-ins-mode-string \1\e[6 q\2
set vi-cmd-mode-string \1\e[2 q\2

set keymap vi-command
# these are for vi-command mode
Control-l: clear-screen
Control-a: beginning-of-line

set keymap vi-insert
# these are for vi-insert mode
Control-l: clear-screen
Control-a: beginning-of-line

$endif

may have the Octave GUI prompt corrupted as q>> undecodable token: \001b(hex)[6\0020(hex). To remedy this, disable the show-mode-in-prompt setting for Octave, by changing the above .inputrc to be

~/.inputrc
$include /etc/inputrc
set editing-mode vi
$if mode=vi

$if Octave
set show-mode-in-prompt off
$else
set show-mode-in-prompt on
set vi-ins-mode-string \1\e[6 q\2
set vi-cmd-mode-string \1\e[2 q\2

set keymap vi-command
# these are for vi-command mode
Control-l: clear-screen
Control-a: beginning-of-line

set keymap vi-insert
# these are for vi-insert mode
Control-l: clear-screen
Control-a: beginning-of-line
$endif

$endif

See also