Как создать м файл в октаве

Обновлено: 06.07.2024

GNU Octave открытое ПО для математических расчетов, известное тем, что поддерживает совместимость с коммерческим MATLAB на очень высоком уровне, фактически это клон MATLAB, т.к. даже малейшая несовместимость рассматривается разработчиками как ошибка.

Первоначально Octave был разработан в качестве сопутствующего программного обеспечения для учебного курса для студентов по проектированию химических реакторов. Позже главный разработчик J.W. Eaton переделал полностью законченный продукт и теперь он активно используется как на производстве, так и в академических целях. Особенно часто Octave используют для матричных вычислений и это имеет смысл, т.к. большая часть инженерных задач и представление данных чаще всего требуют векторного и матричного подхода.

Почему именно Octave? Есть очень много языков программирования, к примеру C, Python, Java, которые позволяют решать подобные задачи, но когда дело доходит до стадии прототипирования и разработки концепции, основным требованием является скорость реализации, то есть время, необходимое для реализации алгоритма. И MATLAB, и Octave как раз созданы для решения проблем такого рода, выполнения вычислений и выдача результата на дисплей.


Octave обладает обширными инструментами для решения общих задач численной линейной алгебры, нахождения корней нелинейных уравнений, интегрирования обычных функций, манипулирования полиномами и интегрирования обыкновенных дифференциальных и дифференциально-алгебраических уравнений. Он легко расширяем пользовательскими функциями, которые можно писать на собственном языке данной программы или, используя динамически загружаемые модули, написанные на C/C++, Fortran и других языках.

  1. Исследование и разработка концептов на производстве и в академических целях.
  2. Получение похожего по функционалу на MATLAB софта, но бесплатно.
  3. Разработка и тестирование математических алгоритмов.
  • NASA использует Octave для разработки систем стыковки космических аппаратов.
  • Jaguar анализирует данные, получаемые от их болидов Formula 1.
  • Шеффилдский Университет использует Octave для разработки программного обеспечения для распознавания раковых клеток.

Как видите, применений данной программы может быть множество и она безусловно позволяет писать программы быстро, а также визуализировать данные во множестве сфер и направлений. Лично для меня этот пакет интересен в рамках моих задач по цифровой обработке радиочастотных сигналов, которую я начал изучать.

Установить программу довольно просто. Текущая версия 5.1.0 и самый простой вариант ее получения, если у вас конечно Linux, это установка через flatpak командой flatpak install flathub org.octave.Octave . Как там обстоят дела с другими дистрибутивами и операционными системами можно узнать на официальном wiki.

Простые примеры

Рассмотрим несколько простых примеров, чтобы максимально быстро войти в курс дела и понять как все тут работает. Взято с документации.

Элементарные вычисления

Попробуем для начала проверить тождество Эйлера.

Из Википедии

Известное тождество, связывающее 5 фундаментальных математических констант.


Вводим в командное окно следующее выражение:

Ответ должен быть равен -1, я у себя получил следующее:

Создание матриц

Векторы и матрицы базовые строительные блоки числового анализа. Для создания матрицы и сохранения ее в переменную для последующего использования нужно ввести следующую команду:

И получим ответ:

Если ввести команду, поставив в конце точку с запятой, то Octave не будет выводить матрицу на экран, например, создадим матрицу на 3 строки и 2 столбца со случайными числами:

Теперь для того, чтобы получить вывод данной матрицы на экран, достаточно ввести в командное окно имя переменной, в которой она сохранена:

Арифметика матриц

Умножение матрицы на скаляр:

Перемножение двух матриц:

Умножение транспонированной матрицы на саму себя:

Решение систем линейных уравнений

Разберем на примере следующего уравнения


Распишем матрицы коэффициентов и свободных членов для этой системы уравнений


Теперь набираем обе получившиеся матрицы в Octave и решаем систему методом наименьших квадратов с помощью, так называемого оператора левого деления \

Решение нелинейных дифференциальных уравнений

Octave может проинтегрировать уравнения следующего вида


Пробуем ввести функцию в Octave, сделать это несложно, гораздо сложнее понять, что ты только что сделал) Я уже давно забыл всю теорию вышмата, так что просто повторил пример и это работает, позже уже буду разбираться как.

Последняя команда производит интегрирование и если ее выполнить без ; в конце, то можно будет увидеть много цифр рассчитанной функциональной зависимости.


Графический вывод

Чтобы получить график, полученного в прошлом примере решения достаточно ввести команду:

Octave тут же создаст новое окно с вот таким вот красивым графиком, который к тому же можно сохранить скажем в pdf формат командой:


Пока на этом все, буду стараться использовать Octave в разработке и если у меня будет получаться, то я непременно напишу об этом в блоге. А пока подписывайтесь куда-нибудь (ВК, Твиттер), что-нибудь жмите, что-нибудь пишите (Телеграм). Всем пока!


Использование командной строки, в большинстве случаев, оправдано лишь при небольших (в пару-тройку строк) программах. Если же алгоритм решения задачи достаточно громоздкий и его необходимо отлаживать, то имеет смысл воспользоваться Script-файлами (далее, просто скриптами). Все дальнейшие листинги будут приводится сугубо в форме скриптов.

Скрипт представляет собой обычный текстовый файл с расширением *.m, содержащий любой допустимый системой набор команд. Для тех, кто знаком с языками программирования -- это аналог модуля (собственно отсюда и название расширения файла).

Замечание! m-файл не должен начинаться с ключевого слова function иначе Octave будет считать этот файл описанием функции (более подробно см. раздел Функции)

Способ 1. (Linux-версия)

Просто из консоли вызвать программу с указанием соответствующего файла:

Способ 2. (Windows-версия)

По умолчанию скрипты, входящие в базовый инсталляционный пакет, расположены в папке "<каталог установки>\Octave\share\octave\2.9.13\m\". Сюда же можно сохранять пользовательские m-файлы. При попытке вызова соответствующего скрипта эта папка будет просматриваться Octave в первую очередь.

Для примера, создадим файл abc.m в указанном выше каталоге со следующим содержимым:

Пример использования

Как указывалось выше, для поиска содержимого m-файла Octave просматривает некоторый список директорий. Этот список содержится во встроенной переменной LOADPATH, а следовательно, нет препятствий добавить туда собственную папку. Выполнить это можно следующим образом:

Внимание! Пользователям Windows следует в путях к файлам писать прямой слеш "/" вместо обратного "\", принятого в системе по умолчанию.


В пакете также определены команды path, savepath, rmpath, genpath, pathdef, pathsep (см. help)

Замечание! Способы 2 и 3 имеют один недостаток: если запустить Octave, а потом внести изменения в скрипт и сохранить его, то эти изменения не вступят в силу до тех пор пока программа не будет перезапущена заново.

Sergey Khoteev

@turbojedi Клаву хардварную была попытка сделать?

Sergey Khoteev

Sergey Khoteev

@001iz @Graveraider Всегда был вопрос а как у Evil персонажей могут быть романтики. Там скорее как в KoToR прогибание под свою сторону силы.

Sergey Khoteev

@Graveraider @001iz Q: Есть ли в игре романы? A: Да. Вы можете завести роман с 4 компаньонами, 2 из которых бисексуальны.

Sergey Khoteev

@001iz Заметки натуралиста, наплыв народу в комиксшопы вот произошел, после теории большого взрыва, где ненавязчиво подавалась идея что у задрота есть деньги, главное втереться к нему в доверие) Но только с хардкором тяжело.

Советуем посмотреть также Сайт Некроманта

Метки

Материалы распространяются на условиях лицензии GNU FDL

Всем привет , это сумбурная статья, родилась из попытки улучшить написание сценариев для octave. Написана она потому что на wikibooks учебник не переведен, а подробный перевод каждой из этих тем , занял бы у меня кучу времени.

GUIOctave.jpg

Table of Contents

Однострочные и многострочные комментарии

Ну здесь коротко, однострочные комментарии это конечно хорошо, но не когда вы создаете стены текста, пояснений или своих рассуждений. Исходная документация.

И если написать небольшой комметарий к нашей функции или сценария, например так

То потом когда вы будете находиться в папке с этим сценарием или функцией, или пути этих папок будут прописаны в файле настроек. Вы можете ввести команду

Раньше мой сценарий для octave представлял из себя набор переменных и комментарии к ним и когда приходилось его повторно запускать, надо было вспомнить, как и что и как называется, просмотреть комментарий, проверить единицы измерений и прочее.

И на экране это выглядит так

а теперь попробуем сделать красиво! Простейший способ это вставлять в промежутки сценария строки

Быстро, также можно воспользоваться функцией disp() , которая печатает либо строку ЛИБО переменную, а затем переходит на следующую строку.

А теперь краткая справка по printf, это функция пришла к нам из C. Вы пишите строку и вставляете в нее по порядку переменные %s — строки %d — простые числа (%e %g %f ) различные варианты вывода сложных чисел. Далее после того как вы написали строчку, вы в том же порядке что и в строке, указываете переменные входящие в неё. Пример для наглядности, и да заметьте перенос строк автоматически не производится!

и то как это выглядит

Маленькое замечание , возможно кто нибудь захочет сделать часть вывода цветным. Пока такая возможность не доступна как и не доступен пока описанная в документации поддержка echo (octave -x).

Не знаю на сколько это интересно и нужно, просто уточнил у создателей, в рассылке.

Ввод и обработка параметров пользователя

Здесь мы рассмотрим применение простой команды input, есть и более сложные вещи, но это потом.

Мы на всякий случай поставили , значение по умолчанию, но это запись не совсем корректна. т.к. если пользователь введет не число, или вам просто нужно будет нажимать Enter , чтобы установить параметр в значение по умолчанию, будет появляться ошибка. Поэтому второй вариант просто берет отрицание от множества допустимых значений.

Различные редакторы для Octave

qtOctave

Изначально я пользовался редактором встроенным в qtOctave , он хорош тем что запускает необходимый скрипт по клавише F5 , обладает сносным автодополнением и подсветкой. Из минусов, подсветку в нем непонятно как настраивать и у меня с ней, глаза сломаешь, также маленькие косячки вроде этого

qtoctave.jpg

Ну и самое обидной qtOctave ,больше не поддерживается (дата 15,03,2012) , о его замене GUI-Octave, поговорим дальше.

Gedit

В моей версии 2,30,4 очень слабая поддержка синтаксиса octave (имеются в виду функции), я подозреваю что такая же ситуация и в KDE-шном Kate. Из плюшек возможность создавать горячие клавиши с фрагментами кода, ну и запуск терминала в gedit.

Ну для телефона это все конечно не подходит , поэтому я попробовал поставить Vim, и оказалось что там очень хорошая поддержка синтаксиса, лучшая пожалуй. Как делать автодополнение для octave я не знаю, но вот подсветку , можно скачать отсюда. Там же описаны строчки которые надо добавить в vimrc.

GUI-Octave

GUIOctave.jpg

Эта программа будет входить в официальные выпуски octave, официальная замена, написана на qt4 , но при этом пока не дотягивает до qtOctave. Требует для скачивания и установки mercurial>=1.8, , также вам понадобятся следующие пакеты: octave-headers; libqscintilla2-dev.

  • Командная строка теперь нормально работает и можно перемещаться по ней и история команд тоже работает
  • Есть доступ к документации, теперь и к оффлайновой тоже
  • Есть вроде горячие клавиши и их можно назначить
  • Есть подсветка синтаксиса и она полная
  • Есть подсказки используемых переменных и функций
  • Табличка с переменными также имеется
  • Сворачивание блоков, вроде if ,for, funcion также работает
  • Пошаговая отладка сценариев а также возможность ставить breakpoint-ы
  • Также есть ссылки на Bugrepport и octave forge и проект Agora для обмена кусками кода их обсуждением и прочий социальный кодинг и пока в зачаточном состоянии.
  • Нет загрузки пакетов с octave forge и их выбор, как это сделано в qtOctave
  • И главное, там пока нет ни каких команд которые вы можете выполнить для расчетов через GUI а не набрав команду.

В завершении хочу сказать что на GSoC проект Octave выложил следующие задачи, даже если octave и не войдет в GSoC можно понять, куда движется проект , что ему нужно.

Emacs Octave Support

EmacsOctaveSupport.jpg

Плюшек вроде комбинаций и того же запуска текста + IDE вещи вроде того что позволяет ECB, а из минусов:

  • Подсветка Emacs не обновляется с 2007 года. Зато она встроена везде даже сейчас когда я пишу статью Emacs рендерит Octave вставки.
  • Ну и нет любимого окна с переменными и историей команд в ECB

Маленькие замечания по использованию Emacs

Как набрать C-c i l ? Берем зажимаем CTRL зажимаем с , теперь не отпуская первых двух по очередно жмем i затем l

Комбинации для редактирования кода:

  • C-h m Справка по моду
  • TAB Ззадает отступ для текущей линии в зависимости от предыдущего контекста
  • LFD Разрывает строку в указанном месте и переносит с учетом отступа
  • M-LFD Разрывает строку в указанном месте и вставляет знак переноса строки(набирать как ESC затем C-j)
  • С-c ; Закомментировать регион.Где регион это область выделения , ну или если визуального выделения нет , то от положения курсора до метки.
  • C-c : Раскомментировать регион, причем он раскомментирует то что было закомментровано в начале строки. Лучше не задумывааться о том что он считает регионом а выделять необходимый код и вводить команду комментирования, раскомментирования и выравнивания форматирования
  • M-C-q Восстанавливает покореженное форматирование (отступы), особенно это полезно после предыдущей функции раскомментирования(octave-indent-defun).
  • C-c C-p Переместиться на строчку назад игнорируя пустые строки и закомментированные строки. С числовым модификатором, перемещается на N строчек
  • C-c C-n Переместиться на строчку вперед игнорируя пустые строки и закомментированные строки. С числовым модификатором, перемещается на N строчек
  • C-c f octave-insert-defun ,эта функция создает шаблон функции, необходимо только ввести сначало имя, потом аргументы и в конце возвращаемое функцией значение.
  • M-; Переносит курсор на некоторое удаление от конца строки, и ставит комментарий

Регион,блок,функция

Перемещения по тексту

Тут понадобиться некий пример:

  • C-c M-C-n Перейти к концу следующего блока , при этом блок должен находиться на одном уровне.Т.е. если вы поместите курсор на 2 строку нашего примера, и введете команду, то вы перейдете на 9 строчку, опять введите команду и вы перейдете на 13 строку, больше переходов не будет,т.к. это последний блок на данном уровне.
  • C-c M-C-p Перейти в начало следующего блока
  • C-c M-C-d Перейти к началу блока на уровень ниже.Поставьте курсор, после for в первой строке и введите комбинацию (CTRL-c затем , один раз нажать ESC а затем CTRL-d) и вы переместитесь на 4 строку, ещё раз нажав указанную комбинацию вы перейдете на 6 строку
  • C-c M-C-u Перейти к началу блока на уровень выше

Интерпретатор

  • M-x run-octave Открывает окно с интерпретатором octave
  • С-<стрелка вверх/вниз> Если курсор установлен в приглашение для ввода octave> то вы можете перемещаться по истории команд интерпретатора

Краткая справка по многооконности

  • С-x 2 Разбить указанное окно на две части по горизонтали
  • С-x 3 Разбить указанное окно на две части по вертикали
  • С-x 1 Оставить только одно окно
  • C-x 5 2 Создать новое окно с редактором Emacs
  • С-x С-b Просмотреть список буферов
  • С-x b название_буфера Сменить буфер текущего окна на название_буфера
  • С-x o Перейти в другое окно

Эти команды запускаются в редакторе с кодом вашего скрипта.

Аббревиатуры и автодополнение

Есть специальный подмод, работы с аббревиатурами octave-abbrev-start, или нажав ` вы включите этот мод, если набрать `? выведет список сокращений, он небольшой, для примера перейдите в пустую строку и нажмите `a затем Enter.

Позже будет статья о том как устроен мой конфиг к редактору Emacs, но уже сейчас можно точно сказать что основные его возможности получены из emacs-for-python , и конечно же не обошлось без поиска и настройки работы автодополнения.

Установка GNU Octave на телефон Nokia N900

n900octave.jpg

Как потом оказалось для того чтобы запускать ваши сценарии из командной строки octave, необходима программа less которая позволяет пролистывать текстовые файлы. И по воле случая , он почемуто находиться в репозитории Maemo Extras-Devel. Теперь необходимо обновить репозитории и поставить less.


MatLab обычно называют Matrix Laboratory. Это высокопроизводительный язык для технических вычислений. Это многопарадигмальный язык программирования, поддерживающий функциональный, императивный, процедурный и объектно-ориентированный язык. Он был разработан Кливом Молером. Он был разработан Math Works. Octave также известен как GNU Octave. Он доступен примерно на 19 языках. Он в основном используется для численного решения линейных и нелинейных задач, а для проведения численных экспериментов он в основном совместим с MATLAB. Это одна из бесплатных альтернатив для Matlab. Octave также называют структурным языком программирования, который поддерживает общие функции стандартной библиотеки C, а также некоторые системные вызовы и функции UNIX.

Matlab

  • Matlab используется в различных аспектах, таких как математика и вычисления, разработка алгоритма, анализ данных, исследование и визуализация, моделирование, моделирование и создание прототипов, разработка приложений, включая создание пользовательского интерфейса. Первоначально он был разработан для обеспечения легкого доступа к программному обеспечению матрицы. Matlab был первоначально выпущен в 1984 году. Он был написан на C, C ++ и Java. Он поддерживает несколько операционных систем, таких как Windows, Mac OS и Linux. Он в основном основан на типе числовых вычислений.
  • В Matlab есть пять неотъемлемых частей, и это язык Matlab, поскольку это высокоуровневый язык матриц / массивов с операторами потока управления, функциями, структурами данных, вводом-выводом и объектно-ориентированными функциями. Другой - среда Matlab, так как это набор инструментов и средств для работы с пользователем или программистом. Обработка графики, которая включает в себя команды высокого уровня для двухмерной и трехмерной визуализации данных, обработки изображений, анимации и представления графики. Здесь имеется библиотека функций MatLab и API MatLab с обширной коллекцией вычислительных алгоритмов и библиотекой, которая позволяет вам писать программы на C и Fortran, которые взаимодействуют с Matlab.

октава

  • Octave в основном расширяемый, так как использует динамически загружаемые модули. Он использует интерпретатор для исполнения языка сценариев октав. Его интерпретатор имеет графику на основе Open GL для создания графиков, графиков, диаграмм, а также для сохранения и печати. Он также включает графический интерфейс пользователя в дополнение к традиционному интерфейсу командной строки. Это язык программирования высокого уровня, в основном используемый для вычисления чисел. Он был разработан Джоном У. Итоном. Первоначально он был выпущен в 1980 году. Он был написан на C, C ++ и Fortran.
  • Он состоит в основном из вызовов функций или сценариев. Его синтаксис в основном основан на матрице и предоставляет различные функции для матричных операций. Octave поддерживает различные структуры данных и объектно-ориентированное программирование. Он имеет отличные функции и совместим с другими языками, такими как синтаксис и функциональная совместимость для MATLAB. Он имеет другие функции, такие как встроенная поддержка комплексных чисел, мощные встроенные математические функции, а также обширные библиотеки функций, а также с точки зрения пользовательских функций.

Сравнение лицом к лицу между Matlab и Octave (Инфографика)


Ниже приведены 6 лучших различий между Matlab и Octave.

Ключевая разница между Matlab и Octave

Оба веб-сервиса Matlab против Octave являются популярным выбором на рынке; Давайте обсудим некоторые основные различия между Matlab и Octave:

», а не «!». В Octave пользователи могут использовать как

Сравнительная таблица Matlab и Octave

Давайте обсудим сравнение между Matlab и Octave следующим образом:

Вывод - Матлаб против Октавы

MATLAB против Octave в основном используются для той же цели. Основным отличием является синтаксис и другие особенности. Matlab состоит из специализированных наборов инструментов, которые не являются частью Octave. Они не полностью совместимы, так как код, написанный на Matlab, может сокрушаться в октаве и наоборот. Основным преимуществом Matlab является огромное количество готовых к использованию инструментов.

Основная цель октавы - предоставить пользователям свободу выбора программного обеспечения для запуска своего кода. Имеет совместимость с Matlab. При интерактивном запуске octave использует команды, набранные во внутреннем буфере, чтобы их можно было вызывать и редактировать. Включает ограниченную поддержку организации данных в структурах.

Рекомендуемая статья

Это было руководство к главной разнице между Matlab против Octave. Здесь мы также обсудим ключевые отличия Matlab от Octave с инфографикой и таблицей сравнения.

Читайте также: