10/05/2009

QtOctave - графическая оболочка для Octave

Хотя MATLAB и правит миром численных математических расчётов, в этом деле ему зреет очень хорошая альтернатива - GNU/Octave. И хотя у Октавы много проблем, таких как слабая документация и в основном консольный режим работы, есть и хорошие новости: проект QtOctave, ставящий своей целью сделать графическую среду разработки для Octave, весьма неплох. О нём и будет этот небольшой пост.

Установка
Для того, чтобы поставить QtOctave, вам потребуется скачать бинарник с сайта авторов и установить пакет octave в вашем дистрибутиве. Собранный и готовый бинарник прямо с сайта qtoctave_binaries_Linux_i386-0.8.1_svn166.binaries.tar.bz2 . Далее устанавливаем QtOctave по инструкции, то есть делаем sudo ./install.sh

В свежих версиях дистрибутивов QtOctave наличествует в репозиториях, и установить её можно просто и легко:
aptitude install qtoctave
По зависимостям потянется и новая версия GNU/Octave, если она ещё не установлена.


Работа
Собственно, открываем графическую консольку и пишем:
qtoctave
Перед вами развернётся графическая благодать, в которой замигает разноцветными огнями вся неимоверная мощь Octave. Разворачиваем одно из окон и открываем там свой скрипт на MATLAB\Octave. Выглядит это так:

По умолчанию можно просматривать переменные, список последних команд и файлов. В общем-то, для работы особенно больше ничего и не нужно. Развернув окно внутренней консоли в QtOctave, можно работать непосредственно с командной строкой Октавы и при этом видеть список активных переменных.


Сразу из замеченных недостатков: в графической консоли внутри QtOctave нельзя использовать подсказку по клавише TAB, при этом оно переходит в режим правки. Так же хотелось бы попенять на то, что QtOctave
не сохраняет расположение окон. Но это в общем не так бросается в глаза: при некотором навыке работы с Октавой или Матлабом работать вы будете не с консолью, а с редактором, как уже описывалось ранее.

Так же в комплекте идёт справка в формате HTML, причём весьма добротная. Конечно, до матлабовской ещё очень и очень далеко, но уже что-то. И главное, что это в комплекте, то есть batteries included.
То есть можно не только работать в Octave, но ещё и получать справку по командам, хотя и весьма базовую.


Заключение

В целом впечатление QtOctave производит очень благоприятное. Хотя Octave можно пользоваться таким же способом, как и MATLAB, о чём уже писалось, просмотр переменных и история команд в графическом виде это очень полезные возможности QtOctave. Хочется пожелать успехов проекту и дальнейшего развития.

Так же можно посмотреть в сторону
Python и SciPy. Как советуют товарищи питонисты, для этого есть следующие инструменты:
  • Python(x,y) готовый дистрибутив питона для научных нужд (batteries included).
  • SPYDER (графическая оболочка, входит также в Python(x,y) в дополнение к Eclipse)
Так же можно посмотреть в сторону IPython.

К сожалению, главный (и единственный!) разработчик QtOctave прекратил работу над проектом. Вот чем стоило бы заняться, КДЕшники, а не пилить свистульки типа фильтров Ланцоша и прочей мишуры...

13 комментариев:

  1. ..в графической консолькЕ..
    ..по клавишЕ TAB..

    ОтветитьУдалить
  2. qtoctave присутствует в репозиториях Ubuntu 9.10. Версия аналогичная (совпадает ли ревизия svn, не знаю). Чувствую, скоро octave станет моей настольной программой. Надо будет рассчитывать электрические цепи.

    ОтветитьУдалить
  3. Вопрос, а как в octave со скоростью по сравнению с matlab и есть ли поддержка например graphic toolbox и guide?

    ОтветитьУдалить
  4. Спасибо, Миша!

    Однако поскольку я для тех же целей пользуюсь не м̶а̶т̶л̶а̶б̶о̶м̶ октавой, а питоном, то не удержусь и подброшу и̶з̶ в̶р̶а̶ж̶е̶с̶к̶о̶г̶о̶ л̶а̶г̶е̶р̶я̶ пару ссылок на графические оболочки для Python и SciPy. Итак,

    Python(x,y) готовый дистрибутив питона для научных нужд (как теперь говорят «с батарейками» — всё сразу, и библиотеки, и графическая оболчка, даже две).

    SPYDER (графическая оболочка, входит также в Python(x,y) в дополнение к Eclipse)

    Хотя я сам использую совсем не графический, но очень удобный IPython :-)

    ОтветитьУдалить
  5. Python + matplotlib мне достаточно

    ОтветитьУдалить
  6. @triklozoid комментирует...
    Спасибо, поправлено.

    @Dr.AKULAvich комментирует...
    qtoctave присутствует в репозиториях Ubuntu 9.10
    И это хорошо. Просто у меня кое-где всё ещё Этч и там его нету.

    Чувствую, скоро octave станет моей настольной программой. Надо будет рассчитывать электрические цепи.
    Надеюсь, однако: (1) мало документации, (2) графический интерфейс в зачаточном виде и (3) мало тулбоксов делают обживание Октавы делом непростым.

    @ can3p комментирует...
    Вопрос, а как в octave со скоростью по сравнению с matlab
    Октава быстрее, по крайней мере на обработке изображений. Типичные операции (Фурье, перемножение матриц) быстрее на 10-15%. Замеры где-то были, надо будет поискать и выложить.

    и есть ли поддержка например graphic toolbox и guide?
    Это я не очень понял, что имеется в виду.


    @Сергей комментирует...
    Спасибо, Миша!
    Ю аре велком, как говорят в наших степях :-)

    Однако поскольку я для тех же целей пользуюсь питоном
    Знаю я вас, оголтелых питонистов :-)))

    не удержусь и подброшу
    Это я только за. Кстати, ссылки включил в пост.
    Спасибо!

    @NL комментирует...
    Python + matplotlib мне достаточно
    Это да, но не всем хватает...

    ОтветитьУдалить
  7. Ну до матлаба ему ещё очень далеко, хотя, как говорится всё впереди...

    ОтветитьУдалить
  8. Больше года пользуюсь собственной сборкой - octave + notepad++/npp_exec. Очень удобно. Практически не обращаюсь к МАТЛАБ за консольными вычислениями.

    ОтветитьУдалить
  9. > Знаю я вас, оголтелых питонистов :-)))

    Хех... Вы нас ещё плохо знаете... :) Я вот для расчётов использую Sage, который включает в себя и SciPy, и NumPy, и Matplotlib, и ещё много нужных вещей.

    Что же касается Octave, то меня интересует такой вопрос: насколько синтаксис Octave схож с синтаксисом MATLAB'а (с тем, чтобы предложить коллегам читать учебники по MATLAB'у, а расчёты проводить в Octave - для тех, кто привык к нему)?
    И может ли GNU Octave + QtOctave эффективно заменить MATLAB в научных вычислениях? Да и вообще, в каком направлении стоит копать, имея возможность и желание перевести компьютеры на работе на свободное ПО и имея сотрудников, не знающих английский?

    Кстати, а почему вы пишете "GNU/Octave" а не "GNU Octave"? Ведь насколько я понял аргументацию этого слэша в слове "GNU/Linux", его следует понимать как "GNU+Linux", а если без него, например "GNU Octave", - как "Octave от проекта GNU". Или я что-то недоразумел?

    Спасибо!

    ОтветитьУдалить
  10. @Блог посвящённый софту комментирует...
    Ну до матлаба ему ещё очень далеко, хотя, как говорится всё впереди...
    Третья версия - это то, что уже съедобно. То есть это вообще можно рассматривать для хоть каких-то применений.


    @Анонимный комментирует...
    Практически не обращаюсь к МАТЛАБ за консольными вычислениями.
    Повезло. Я без матлаба не жилец, потому как Октава не умеет нормально делать графики, которые можно на ходу анализировать. И нет, гнуплот это не решение.


    @v-2e комментирует...
    Я вот для расчётов использую Sage, который включает в себя и SciPy, и NumPy, и Matplotlib, и ещё много
    Оооо даааа, Sage это вообще как Грендайзер-робот-звездолёт: огромный, страшный и корявый :-) Семь ног, десять рук, три задницы... Одна рука из стекла, вторая из бетона, третья наполовину доделана из углеродных нанотрубок... Емакс на этом фоне как трёхколёсный велосипед "Дружок" перед межгалактическим звездолётом :-)


    Что же касается Octave, то меня интересует такой вопрос: насколько синтаксис Octave схож с синтаксисом MATLAB'а
    Почти идентичен. После долгого поливания разработчиков октавы дерьмом, пардон, до них таки дошло, что их жалкая поделка никому не нужна без 100% совместимости с матлабом. И с третьей версии они начали пилить это в правильную сторону.

    с тем, чтобы предложить коллегам читать учебники по MATLAB'у, а расчёты проводить в Octave - для тех, кто привык к нему?
    Октава в консоли почти не отличается от матлаба. Октава - это такая любительская поделка под матлаб.
    Очень слабая поддержка функций, нужных для теории управления, глупые ошибки в Images processing toolbox (функция imread не читает tiff-файлы? и это в релизе!?)... В общем, елозить напильником по ней придётся.

    И может ли GNU Octave + QtOctave эффективно заменить MATLAB в научных вычислениях?
    Зависит от области. В обработке изображений - в принципе да, в теории управления - нет. Это то, что знаю я.

    Октава это каркас, причём весьма красноглазый и местами недоделанный. Но для старта сойдёт. Для серьёзных вещей покупайте матлаб без колебаний.

    имея возможность и желание перевести компьютеры на работе на свободное ПО
    А надо ли? Большинство нормальных инженерных программ всё равно платные (AutoCAD, программы для FEM, MATLAB...). Себе дороже. Красноглазая недоделка Октава - это лучшее (слышите? ЛУЧШЕЕ!) из всего научного опенсорца. Всё остальное жиже на порядок.



    >> научных вычислениях
    >> сотрудников, не знающих английский

    Таких надо гнать ссаными тряпками от научных вычислений. Человек, не знающий английского, не получил нормального образования и не способен читать современную литературу (а не устаревшее барахло 60-х годов).
    Выкидывайте таких "сотрудников" подальше, а то будете, как мифи, слиты с помойками типа Краснодарского политехнического колледжа....

    Кстати, а почему вы пишете "GNU/Octave" а не "GNU Octave"?
    Дань уважения проекту GNU, о котором сейчас не часто вспоминают. Октава - часть GNU. В общем, это (в моём случае) напоминание о старике Столмане и его GNU.

    Ведь насколько я понял аргументацию этого слэша в слове "GNU/Linux", его следует понимать как "GNU+Linux"
    В общем да. Но и Октава без GNU не случилась бы. Это я вот на это намекаю.

    Кстати, QtOctave в Ленни есть, должа быть и в Сквизи (у меня его нету нигде).

    ОтветитьУдалить
  11. >читать современную литературу (а не устаревшее барахло 60-х годов).
    Думаю ещё будет время когда как в 50-е будет актуальная и понятная русскоязычная литература по новейшим вопросам.
    Поймите, сперва идёт заинтересованность в технике и только потом (от нужды) изучение языка. А если всё изначально будет на ихнем языке, от самых азов- многих мы просто потеряем.
    Я скажем, и не собирался знать английский всерьёз если бы не интерес к науке и технике, который родился и вырос на советских учебниках и научно-технических журналах. В которых всё было понятно и наглядно даже для школьника. А уж потом...

    ОтветитьУдалить
  12. Уважаю. Хотя сам использую октаву в чистом виде (пересел после матлаба по необходимости - привычка) на разных линуксах. Вот что было бы совсем интересно - это генерация C-кода для всякого железа (по подобию MATLAB Embedded Coder) из m-файлов.

    ОтветитьУдалить
  13. @Ross комментирует...
    Думаю ещё будет время когда как в 50-е будет актуальная и понятная русскоязычная литература по новейшим вопросам.

    "Жаль только, что в эту пору чудесную жить не придется ни мне, ни тебе".

    Современная научная литература = английский язык. Если, конечно, хочется заниматься актуальными вещами.

    Поймите, сперва идёт заинтересованность в технике и только потом (от нужды) изучение языка. А если всё изначально будет на ихнем языке

    Китайцы и индусы изучают английский в своих (далеко не самых лучших) университетах, и там учат по современным английским книгам. И все живы, здоровы, и заполоняют университеты других стран. В отличие от.

    Я скажем, и не собирался знать английский всерьёз
    А я-то всегда думал, что университетское образование - это ещё и владение иностранным языком....

    @Анонимный комментирует...
    Уважаю. Хотя сам использую октаву в чистом виде (пересел после матлаба по необходимости - привычка) на разных линуксах.

    Анонимус, качество кода Октавы, скажем так, оставляет желать очень много лучшего. Как и документация. У октавы нет profiler, нет возможности запускать MEX-файлы, паршивая документация, очень плохо с алгоритмами оптимизации... И нет графического интерфейса (хотя есть QtOctave, про что и пост).

    Вот что было бы совсем интересно - это генерация C-кода для всякого железа

    Вот, кстати, этим геморроем сейчас автор этих строк и страдает. Только не для железа, а для ускорения алгоритмов оптимизации. Буквально сегодня дописал на ANSI C + BLAS алгоритм для convex quadratic programming на C - так оно тратит 2 микросекунды на итерацию, по сравнению с 50 в M-файле.

    Анонимус, проблема в том, что эти ваши MATLAB Embedded Coder выдают абсолютно нечитабельный (и потенциально - не самый лучший) выхлоп на C/C++. Написанное руками человека, имеющего представление о том, что он делает - намного лучше. Кстати, переплюнуть JIT-компилятор матлаба при написании того же алгоритма на ANSI C было на удивление непросто.

    Думаю скоро написать пост по результатам битья головой о стену.

    ОтветитьУдалить