Matlab / GNU Octave трюки и хитрости
Всякие неочевидные вещи, которые лучше где-то записать
Разница в поведении 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>