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 комментариев: |высказаться!| RSS-лента дискуссии.|
triklozoid комментирует...

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

drakulavich комментирует...

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

Unknown комментирует...

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

Sergey комментирует...

Спасибо, Миша!

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

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

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

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

Анонимный комментирует...

Python + matplotlib мне достаточно

virens комментирует...

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

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

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

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

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


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

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

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

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

Блог посвящённый софту комментирует...

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

Анонимный комментирует...

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

Анонимный комментирует...

> Знаю я вас, оголтелых питонистов :-)))

Хех... Вы нас ещё плохо знаете... :) Я вот для расчётов использую 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". Или я что-то недоразумел?

Спасибо!

virens комментирует...

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


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


@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 в Ленни есть, должа быть и в Сквизи (у меня его нету нигде).

Ross комментирует...

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

Анонимный комментирует...

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

virens комментирует...

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

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

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

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

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

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

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

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

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

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

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

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

Отправить комментарий

Подписаться на RSS-ленту комментариев к этому посту.