Хотя 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)
К сожалению, главный (и единственный!) разработчик QtOctave прекратил работу над проектом. Вот чем стоило бы заняться, КДЕшники, а не пилить свистульки типа фильтров Ланцоша и прочей мишуры...
13 комментариев: |высказаться!| RSS-лента дискуссии.|
..в графической консолькЕ..
..по клавишЕ TAB..
qtoctave присутствует в репозиториях Ubuntu 9.10. Версия аналогичная (совпадает ли ревизия svn, не знаю). Чувствую, скоро octave станет моей настольной программой. Надо будет рассчитывать электрические цепи.
Вопрос, а как в octave со скоростью по сравнению с matlab и есть ли поддержка например graphic toolbox и guide?
Спасибо, Миша!
Однако поскольку я для тех же целей пользуюсь не м̶а̶т̶л̶а̶б̶о̶м̶ октавой, а питоном, то не удержусь и подброшу и̶з̶ в̶р̶а̶ж̶е̶с̶к̶о̶г̶о̶ л̶а̶г̶е̶р̶я̶ пару ссылок на графические оболочки для Python и SciPy. Итак,
Python(x,y) готовый дистрибутив питона для научных нужд (как теперь говорят «с батарейками» — всё сразу, и библиотеки, и графическая оболчка, даже две).
SPYDER (графическая оболочка, входит также в Python(x,y) в дополнение к Eclipse)
Хотя я сам использую совсем не графический, но очень удобный IPython :-)
Python + matplotlib мне достаточно
@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". Или я что-то недоразумел?
Спасибо!
@Блог посвящённый софту комментирует...
Ну до матлаба ему ещё очень далеко, хотя, как говорится всё впереди...
Третья версия - это то, что уже съедобно. То есть это вообще можно рассматривать для хоть каких-то применений.
@Анонимный комментирует...
Практически не обращаюсь к МАТЛАБ за консольными вычислениями.
Повезло. Я без матлаба не жилец, потому как Октава не умеет нормально делать графики, которые можно на ходу анализировать. И нет, гнуплот это не решение.
@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 в Ленни есть, должа быть и в Сквизи (у меня его нету нигде).
>читать современную литературу (а не устаревшее барахло 60-х годов).
Думаю ещё будет время когда как в 50-е будет актуальная и понятная русскоязычная литература по новейшим вопросам.
Поймите, сперва идёт заинтересованность в технике и только потом (от нужды) изучение языка. А если всё изначально будет на ихнем языке, от самых азов- многих мы просто потеряем.
Я скажем, и не собирался знать английский всерьёз если бы не интерес к науке и технике, который родился и вырос на советских учебниках и научно-технических журналах. В которых всё было понятно и наглядно даже для школьника. А уж потом...
Уважаю. Хотя сам использую октаву в чистом виде (пересел после матлаба по необходимости - привычка) на разных линуксах. Вот что было бы совсем интересно - это генерация C-кода для всякого железа (по подобию MATLAB Embedded Coder) из m-файлов.
@Ross комментирует...
Думаю ещё будет время когда как в 50-е будет актуальная и понятная русскоязычная литература по новейшим вопросам.
"Жаль только, что в эту пору чудесную жить не придется ни мне, ни тебе".
Современная научная литература = английский язык. Если, конечно, хочется заниматься актуальными вещами.
Поймите, сперва идёт заинтересованность в технике и только потом (от нужды) изучение языка. А если всё изначально будет на ихнем языке
Китайцы и индусы изучают английский в своих (далеко не самых лучших) университетах, и там учат по современным английским книгам. И все живы, здоровы, и заполоняют университеты других стран. В отличие от.
Я скажем, и не собирался знать английский всерьёз
А я-то всегда думал, что университетское образование - это ещё и владение иностранным языком....
@Анонимный комментирует...
Уважаю. Хотя сам использую октаву в чистом виде (пересел после матлаба по необходимости - привычка) на разных линуксах.
Анонимус, качество кода Октавы, скажем так, оставляет желать очень много лучшего. Как и документация. У октавы нет profiler, нет возможности запускать MEX-файлы, паршивая документация, очень плохо с алгоритмами оптимизации... И нет графического интерфейса (хотя есть QtOctave, про что и пост).
Вот что было бы совсем интересно - это генерация C-кода для всякого железа
Вот, кстати, этим геморроем сейчас автор этих строк и страдает. Только не для железа, а для ускорения алгоритмов оптимизации. Буквально сегодня дописал на ANSI C + BLAS алгоритм для convex quadratic programming на C - так оно тратит 2 микросекунды на итерацию, по сравнению с 50 в M-файле.
Анонимус, проблема в том, что эти ваши MATLAB Embedded Coder выдают абсолютно нечитабельный (и потенциально - не самый лучший) выхлоп на C/C++. Написанное руками человека, имеющего представление о том, что он делает - намного лучше. Кстати, переплюнуть JIT-компилятор матлаба при написании того же алгоритма на ANSI C было на удивление непросто.
Думаю скоро написать пост по результатам битья головой о стену.
Отправить комментарий