|
|
  |
scilab vs python, что выбрать? |
|
|
|
Dec 25 2014, 09:51
|
Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 22-04-08
Из: г. Екатеринбург
Пользователь №: 36 992

|
добрый день, коллеги.
ранее долгое время применял матлаб для создания m файлов, простенького gui, работы с com портами, файлами.
теперь матлаб для меня закрыт, встал вопрос использовать "бесплатное" ПО, выбираю между scilab и python. задачи по обработке сигналов, алгоритмы в основном свои, так что интересует в первую очередь удобство визуализации результатов, возможность создания всевозможных фильтров, создание gui b работа с железяками. посмотрел примеры и того и другого вроде примерно на одном уровне, но может быть это только на первый взгляд?
подскажите, пожалуйста у которого из них больше удобств, функциональнее библиотеки, в общем надо определиться, на что переходить.
спасибо.
|
|
|
|
|
Dec 25 2014, 10:05
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(shf_05 @ Dec 25 2014, 12:51)  подскажите, пожалуйста у которого из них больше удобств, функциональнее библиотеки, в общем надо определиться, на что переходить. Если вы к MATLAB'у привыкли, то надо однозначно выбирать scilab. Тут, по крайней мере, хоть какая-то аналогия будет, а в некоторых местах даже прямая подстановка. Тем более что в пакете scilab есть практически все, что есть в MATLAB. А чего вдруг MATLAB от вас закрылся? Или это вы от него закрылись в приступе патриотизма?
|
|
|
|
|
Dec 25 2014, 16:34
|
Местный
  
Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778

|
Цитата(ViKo @ Dec 25 2014, 17:13)  Еще есть Octave. Пока выбирал, чем пользоваться, что-то скачивал, пробовал. Но лучше Matlab быть ничего не может (если не покупать). У меня впечатление от octave даже лучше чем от scilab. Да и с matlab он пытается быть совместим, в отличии от scilab. Но я пользуюсь в основном самим языком для работы с матрицами, а не библиотеками для прикладных задач.
Сообщение отредактировал amaora - Dec 25 2014, 16:35
|
|
|
|
|
Dec 26 2014, 05:35
|
Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 22-04-08
Из: г. Екатеринбург
Пользователь №: 36 992

|
спасибо всем за ответы, буду пробовать питон- он вещь более универсальная. матлаб закрыли по причине политики использования лицензированного ПО, матлаб использует не много народа, поэтому лицензии не видать. Цитата(ViKo @ Dec 25 2014, 19:13)  Но лучше Matlab быть ничего не может с этим полностью согласен
|
|
|
|
|
Dec 26 2014, 06:40
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(_Pasha @ Dec 25 2014, 21:17)  Питон объединяет великое множество и другого софта Так это любой язык программирования ровно так же "объединяет множество софта", на нем написанного. Однако есть огромная разница между тем, чтобы писать на языке, используя имеющиеся для него библиотеки, и работой в таких пакетах, как MATLAB, MATCAD, SCILAB и т.п. Например, существуют богатые по возможностям библиотеки для C и/или FORTRAN'а: MKL (Intel Math Kernel Library), IPP (Intel Integrated Performance Primitives), ATLAS (Automatically Tuned Linear Algebra Software), NAG (Numerical Algorithms Group), IMSL (International Mathematics and Statistics Library) и т.п., однако приходится попотеть, чтобы с их помощью хотя бы вектор на матрицу умножить - слишком много в тех функциях параметров, а том числе и малопонятных.  Тогда как в матпакетах такого рода опрерации делаются элементарно - записью, предельно близкой к алгебраической.
|
|
|
|
|
Dec 26 2014, 07:56
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(Xenia @ Dec 26 2014, 09:40)  Так это любой язык программирования ровно так же "объединяет множество софта", на нем написанного. Однако есть огромная разница между тем, чтобы писать на языке, используя имеющиеся для него библиотеки, и работой в таких пакетах, как MATLAB, MATCAD, SCILAB и т.п. Например, существуют богатые по возможностям библиотеки для C и/или FORTRAN'а: MKL (Intel Math Kernel Library), IPP (Intel Integrated Performance Primitives), ATLAS (Automatically Tuned Linear Algebra Software), NAG (Numerical Algorithms Group), IMSL (International Mathematics and Statistics Library) и т.п., однако приходится попотеть, чтобы с их помощью хотя бы вектор на матрицу умножить - слишком много в тех функциях параметров, а том числе и малопонятных.  Тогда как в матпакетах такого рода опрерации делаются элементарно - записью, предельно близкой к алгебраической. Во-первых, numPy не что иное как обертки над MKL, ATLAS, LAPACK, BLAS nagPy ... NAG PyIMSL ... IMSL во-вторых, питон это несколько бОльшая сущность в сравнении с "вездесущим" вижуал бейсик на венде.
|
|
|
|
|
Dec 26 2014, 08:18
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(_Pasha @ Dec 26 2014, 10:56)  Во-первых, numPy не что иное как обертки над MKL, ATLAS, LAPACK, BLAS nagPy ... NAG PyIMSL ... IMSL А бывают ли такие обертки для C++? Чтобы Питон не учить на C++ остаться, но так хитро определить классы (и операторы внутри них) матриц и векторов, чтобы алгебраические операции над ними можно было проиpводить в записи, приближенной к математической? Т.е. обычными 4-мя арифметическими действиями. Вот только как быть с транспонированием, не знаю, т.к. апостроф С++ переопределить не даст. P.S. Вопрос не только к Pasha, но и всякому, кто видел что-то подобное в уже реализованном виде. А лучше - еще и пользовался этим.
|
|
|
|
|
Dec 26 2014, 10:27
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(Xenia @ Dec 26 2014, 11:18)  А бывают ли такие обертки для C++? Чтобы Питон не учить на C++ остаться, но так хитро определить классы (и операторы внутри них) матриц и векторов, чтобы алгебраические операции над ними можно было проиpводить в записи, приближенной к математической? Т.е. обычными 4-мя арифметическими действиями.
Вот только как быть с транспонированием, не знаю, т.к. апостроф С++ переопределить не даст. Как бы обманывать язык смысла нету особого... Сразу приходят на ум MathCAD и язык APL... Но маткад - это ж еще и символьные операции. Короче http://twt.mpei.ac.ru/ochkov/MAS_KP/mas_kp.htmlЦитата В 2003 г. фирма Mathsoft запустила в опытную эксплуатацию так называемый Mathcad Application Server (MAS), позволяющий запускать на нем Mathcad-документы и обращаться к ним дистанционно через Интернет. Автор данной статьи тестировал бета-версию MAS и установил ее локальную копию по адресу www.vpu.ru/mas. Там же можно найти ссылки на документы, касающиеся технологии использования MAS и подготовки Mathcad-документов к публикации в Интернет[5]. http://twtmas.mpei.ac.ru/mas/Worksheets/Pendulum_DAE.mcd например Облачный маткад...
|
|
|
|
|
Dec 26 2014, 12:52
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(_Pasha @ Dec 26 2014, 13:27)  Как бы обманывать язык смысла нету особого... Обмана здесь нет, т.к. в языке C++ определение операторов (в том числе и арифметических) в отношении "самодельных" классов - типичная практика, т.к. по умолчанию объект наделяется только оператором присваивания, который реализуется копированием области данных между объектами одного и того же типа. В тоже время понятно, что матрицы и векторы по своей сути - объекты классов, поскольку кроме адреса массива нужно помнить число столбцов и строк. Ну, и аллокацию и деаллокацию памяти тоже удобно делать неявно в конструкторе и деструкторе, соответственно. Таким образом, матрицы и векторы все равно приобрели бы форму объектов классов, даже если бы нечего большего мы от них не хотели. Но поскольку это объекты, то почему бы не определить между ними арифметические операции? Тем более что само понятие "межклассового" оператора именно для этого и было введено. Проблему здесь вижу только в том, что в математике алгебраические операции - тернарные, т.е. в операции участвуют три объекта: между двумя из них производится операция, а в третий помещается результат. Тогда как в C++ операторы бывают лишь унарными и бинарными, а тернарных не бывает. Но в принципе исхитриться здесь можно, причем самым простым и очевидным вариантом является создание промежуточного объекта, не имеющего явного имени. А для операции транспонирования вместо запрещенного апострофа можно выбрать какой-то унарный оператор - тильду или восклицательный знак. Кстати, я сама это уже делала, а спрашиваю лишь потому, что мне интересно, решал ли кто-то подобную задачу, а если решал, то как именно. Тогда как меня коробит тот подход, когда при малейшей трудности в реализации задачи программист с готовностью иммигрирует на другой язык только потому, что эта фича там уже есть в готовом виде.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|