# Octave (简体中文)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

相关文章

- Matlab
- Sage-mathematics
- Mathematica

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

本文或本节需要翻译。要贡献翻译，请访问简体中文翻译团队。

附注： 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

- Wikipedia:GNU Octave

Categories:

- Programming languages (简体中文)
- Numerical analysis (简体中文)
- GNU (简体中文)

Hidden category:

- Pages or sections flagged with Template:Translateme (简体中文)