Doka avatar

Журнал Эмбеддед-Инженера

О микроэлектронике, радиотехнике и хобби

Matlab / GNU Octave трюки и хитрости

Всякие неочевидные вещи, которые лучше где-то записать

Dmitry Murzinov

2 минут чтения

Разница в поведении Matlab и GNU Octave

При использовании Octave в командном режиме столкнулся с “любопытным” поведением: есть опция запуска --traditional, которая for closer MATLAB compatibility, но в таком случае в конце скрипта приходилось писать exit(0); иначе после выполнения скрипта не происходил выход из шелла.

Выяснилось, что при отсутствии указания опции запуска --traditional запуск Octave оканчивается кодом завершения отличным от 0, несмотря на прямое указание через exit(0); что сильно ломает логику мейкфайла.

В итоге для true-octave mode наличие exit() в скрипте лишнее и даже приводящее к некорректному завершению работы octave shell.

Установка пакетов в GNU Octave

Список доступных пакетов: https://gnu-octave.github.io/packages/

Для установки пакетов должен быть установлен liboctave-dev:

sudo apt install octave liboctave-dev

или

sudo dnf install octave liboctave-dev

Далее запускаем интерпретатор и делаем:

pkg install -forge control
pkg install -forge signal

(без control не ставится signal, в котором все необходимые функции для ЦОС)

И вот тут возможно нас подстерегает опасность: апи пакета и октава может не совпасть и тогда сборка пакета завершится ошибкой. Способа указать конкретную версию пакета команде pkg как в случае с pip нету, но можно скачать старую версию пакета отсюда, а затем сделать:

pkg install signal-1.4.1.tar.gz

Список установленных пакетов: pkg list

Чтобы пакеты были загружены по умолчанию

When Octave starts, it runs ~/.octaverc. If you want Octave to automatically load a package, simply add a pkg load pkg-name command to it. If the files does not exist, create it.

If you do this, remember that other people may not have Octave configured to load packages at startup. Therefore, if you write code for others, remember that your programs still need to load the packages they require.

For completion sake, the system-wide octaverc file in Windows executable would be at: C:\Octave\Octave-x.y.z\share\octave\site\m\startup\octaverc or user-specific settings at %USERPROFILE%/.octaverc.

Командный запуск

Нативный режим GNU Octave

octave --norc --silent --no-gui --no-window-system <script.m> <arg1> <arg2> <arg3>

Режим closer MATLAB compatibility:

octave --norc --silent --no-gui --no-window-system --traditional <script.m> <arg1> <arg2> <arg3>

Справка

Последние записи

Разделы