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

|
добрый день, коллеги.
ранее долгое время применял матлаб для создания m файлов, простенького gui, работы с com портами, файлами.
теперь матлаб для меня закрыт, встал вопрос использовать "бесплатное" ПО, выбираю между scilab и python. задачи по обработке сигналов, алгоритмы в основном свои, так что интересует в первую очередь удобство визуализации результатов, возможность создания всевозможных фильтров, создание gui b работа с железяками. посмотрел примеры и того и другого вроде примерно на одном уровне, но может быть это только на первый взгляд?
подскажите, пожалуйста у которого из них больше удобств, функциональнее библиотеки, в общем надо определиться, на что переходить.
спасибо.
|
|
|
|
|
 |
Ответов
(1 - 53)
|
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++ операторы бывают лишь унарными и бинарными, а тернарных не бывает. Но в принципе исхитриться здесь можно, причем самым простым и очевидным вариантом является создание промежуточного объекта, не имеющего явного имени. А для операции транспонирования вместо запрещенного апострофа можно выбрать какой-то унарный оператор - тильду или восклицательный знак. Кстати, я сама это уже делала, а спрашиваю лишь потому, что мне интересно, решал ли кто-то подобную задачу, а если решал, то как именно. Тогда как меня коробит тот подход, когда при малейшей трудности в реализации задачи программист с готовностью иммигрирует на другой язык только потому, что эта фича там уже есть в готовом виде.
|
|
|
|
|
Dec 26 2014, 13:47
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Про питон ничего сказать не могу, но Scilab вполне пригоден для моделей малой и средней сложности. Он довольно шустрый и начиная с 5.4 обзовелся нормальной мордой, неплохая стандартная библиотека (полная поддержка матричных вычислений, фильтрация/свертка/Фурье, а остальное можно сделать самому, открыв книжку по ЦОС  ). Моделировал на нем алгоритмы приёмника/передатчика, считал интерполяторы/дециматоры, соединял все это добро с HDL симулятором, работать можно. Из явных минус в сравнении с матлаб: нет fixed-point функционала, нет симулинка, нет встроенных функций помехоустойчивого кодирования (ну это проблема для меня была, не мог я сделать на нем полной модели приёмника, а кому то может и не важно это совсем  )
Сообщение отредактировал serjj - Dec 26 2014, 13:48
|
|
|
|
|
Dec 27 2014, 10:07
|
Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 22-04-08
Из: г. Екатеринбург
Пользователь №: 36 992

|
ну маета с установкой питона!
поставил на ура питон 3.4 x64, после этого библиотеки matplotlib ipython и т.п. ни в какую не хотели вставать, и visaul studio express всех мастей поставил и SDK со всевозможными компиляторами (не пробовал только mingw и gcc, полагая, что под WIN 7x64 лучше использовать компилятор от MSVS), пробовал советы из инета - все безрезультатно. в итоге - установил пока pyzo2014a, правда не знаю насколько это универсальная штука коллеги, посоветуйте, пожалуйста (!) наиболее совместимую конфигурацию - версия питона, компилятор, так, чтобы созданное ПО работало в т.ч. и на других машинах - речь о WINx (чаще всего 7x64), планирую применять matplotlib, ipython, notebook...
|
|
|
|
|
Dec 29 2014, 07:03
|

Профессионал
    
Группа: Свой
Сообщений: 1 003
Регистрация: 20-01-05
Пользователь №: 2 072

|
Цитата(Xenia @ Dec 26 2014, 11:18)  А бывают ли такие обертки для C++? Чтобы Питон не учить на C++ остаться, но так хитро определить классы (и операторы внутри них) матриц и векторов, чтобы алгебраические операции над ними можно было проиpводить в записи, приближенной к математической? Т.е. обычными 4-мя арифметическими действиями. Приличных оберток не видел, но есть alglib от Сергея Бочканова, где есть попытки прикрутить операторы куда нужно. Поскольку там уже все в классах, то, наверное, можно попытаться расширить список операций под свои нужды.
|
|
|
|
|
Dec 29 2014, 09:30
|

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

|
Цитата(halfdoom @ Dec 29 2014, 10:03)  Приличных оберток не видел, но есть alglib от Сергея Бочканова, где есть попытки прикрутить операторы куда нужно. Поскольку там уже все в классах, то, наверное, можно попытаться расширить список операций под свои нужды. Про Alglib давно знаю и даже коллекционирую ее версии на ftp, однако стиль использования этой библиотеки мне сильно не нравится. Т.е. меня-то интересуют именно варианты "прикручивания", а не библиотеки, которые выполняют работу. Тогда как Alglib сильно "недокручена", поскольку требует явного вызова функций. Умножение двух матриц, на мой взгляд, должно выглядеть (на C++) так: Код RealMatrix A(3,4), B(4,3), C(3,3); C = A * B; где: RealMatrix - класс с конструктором, аллокирующий для матрицы место в памяти и запоминающий обе ее размерности. А дальше идет сплошная алгебра, по записи мало отличающаяся от математической. В сущности все три операции (*,+,-) совершенно тривиальны - их самой написать проще, чем библиотеки подключать. А потому проблема состоит только в том, чтобы компилятор компилировал непосредственно алгебраическую запись типа C = A * B, превращая ее в вызовы функций неявно. А вот такого "счастья", которое предлагает мне Alglib, мне задарма не надо: Код ae_matrix A; ae_matrix B; ae_matrix C; ae_frame_make(_state, &_frame_block); ae_matrix_init(&A, 3, 4, DT_REAL, _state); ae_matrix_init(&B, 4, 3, DT_REAL, _state); ae_matrix_init(&C, 3, 3, DT_REAL, _state); matrixmatrixmultiply(&A, i1, i1+row1-1, j1, j1+col1-1, trans1, &B, i2, i2+row2-1, j2, j2+col2-1, trans2, scl1, &C, i3, i3+l-1, j3, j3+r-1, scl2, &x1, _state); Жуть! Даже не верится, что это C++. Впечатление такое, что авторы библиотеки этого языка не знают, если настолько последовательно игнорируют его возможности.
|
|
|
|
|
Dec 29 2014, 13:42
|
Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 22-04-08
Из: г. Екатеринбург
Пользователь №: 36 992

|
Цитата(Xenia @ Dec 29 2014, 14:30)  Умножение двух матриц, на мой взгляд, должно выглядеть (на C++) так: Код RealMatrix A(3,4), B(4,3), C(3,3); C = A * B; почему бы хотя бы не например Код mpy(A,B); ? взять питон - дак вообще судя по всему для массива и матрицы у него значок * разное значит - как бы не запутаться вовсе...
|
|
|
|
Guest_TSerg_*
|
Dec 29 2014, 18:28
|
Guests

|
Цитата(shf_05 @ Dec 25 2014, 12:51)  добрый день, коллеги. .. теперь матлаб для меня закрыт, встал вопрос использовать "бесплатное" ПО, Может заинтересует SMath? http://ru.smath.info/
|
|
|
|
|
Dec 29 2014, 18:53
|
Местный
  
Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778

|
Цитата(Xenia @ Dec 26 2014, 15:52)  Проблему здесь вижу только в том, что в математике алгебраические операции - тернарные, т.е. в операции участвуют три объекта: между двумя из них производится операция, а в третий помещается результат. Тогда как в C++ операторы бывают лишь унарными и бинарными, а тернарных не бывает.
Но в принципе исхитриться здесь можно, причем самым простым и очевидным вариантом является создание промежуточного объекта, не имеющего явного имени. А для операции транспонирования вместо запрещенного апострофа можно выбрать какой-то унарный оператор - тильду или восклицательный знак.
Кстати, я сама это уже делала, а спрашиваю лишь потому, что мне интересно, решал ли кто-то подобную задачу, а если решал, то как именно. Тогда как меня коробит тот поход, когда при малейшей трудности в реализации задачи программист с готовностью иммигрирует на другой язык только потому, что эта фича там уже есть в готовом виде. Те кто занимаются графикой (OpenGL/D3D), играми и близкими к этому задачами давно уже так делают. А сейчас с использованием новых стандартов наверно улучшили свои решения, сам я давно уже не слежу, что там происходит. Но у них обычно фиксированные размерности не выше 3, геометрия.
|
|
|
|
|
Dec 30 2014, 04:45
|

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

|
Цитата(amaora @ Dec 29 2014, 21:16)  Интереснее было бы компилировать код в алгебраической записи (на matlab языке или ином) в оптимальный код на C. Так, чтобы использовались известные свойства матриц. Например разреженность может заметно сократить количество операций при умножении. Матрицы могут быть симметричными, диагональными, ортогональными и т.д. Все это можно использовать при генерации оптимального по быстродействию (или другому критерию) кода. Если матрица диагональная, то ее хранят в векторе  . А такие свойства, как симметрия и эрмитовость, обычно не позволяют ускорить операции сложения, вычитания и умножения, поскольку для этого требуется, чтобы ОБА операнда обладали таким свойством. Что же касается разряженных матриц, то это скорее не алгебраическая проблема, а ... "процессоростроительная", т.к. касается только того, способен ли FPU быстрее выполнять бинарные операции, если один из операндов нулевой. Причем, в электронной реализации (а так же на FPGA) такая проверка операндов на нулёвость не привела бы к замедлению арифметики с прочими числами, поскольку признак нулёвости регистра всегда можно сделать схемотехническим, экстренно отменяющим выполнение операции. Но если процессоростроители этого не предусмотрели, то проверять каждый операнд на нулёвость в программе будет не менее накладно по времени, чем честно умножать на нуль. Тем не менее, я веду речь исключительно об удобстве использования арифметических операторов в матрично-векторных выражениях и ни о чем другом, т.к. всё другое традиционно производится через явные вызовы функций, а не средствами операторов. И если уж у вас обе матрицы настолько заковыристые, что их произведение через ухо вычислять быстрее, то и не пользуйтесь тогда операторами, а вызывайте для них функцию, которая вычисляет результат через ухо. В конце концов, языки высокого уровня родились вместе с Фортраном, когда стало допустимо записывать арифметические операции посредством четырех операторов (+,-,*,/), используя скобки, и именно это вызывало бум! Потому как с помощью явного вызова функций можно было бы припеваючи продолжать жить на ассемблере. Отсюда и вопрос мной поставлен так: допускает ли механизм определения операторов языка C++ определить их для матриц и векторов таким образом, чтобы три операции (+,-,*) над ними имели естественно-арифметический вид записи? Если да, то почему это до сих пор не сделано производителями библиотек линейной алгебры? А если где-то уже сделано, то где именно?
|
|
|
|
|
Dec 30 2014, 06:00
|

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

|
Цитата(shf_05 @ Dec 30 2014, 08:40)  Нет, этого я не видела. Но даже и с вашей подачи не могу найти в этой статье место, где бы автор производил умножение C=A*B в операторном виде. Слишком ж там кода много вывалено, что пример, если он и был приведен, то там утонул. Тогда как операции типа A+=B A-=B на реализацию которых упирает автор статьи, очевидно реализуются без проблем, поскольку они бинарны, а не тернарны. Тогда как организовать бинарным оператором операцию умножения в общем случае невозможно, т.к. там продукт может иметь иную размерность, чем каждый из операндов.
|
|
|
|
|
Dec 30 2014, 07:05
|

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

|
Цитата(shf_05 @ Dec 30 2014, 09:34)  я так понимаю, на примере того, как сделал автор, можно перегрузить оператор * , чтобы он умножал какие угодно матрицы с предпроверкой их размерностей. Я в собственной реализации перегружала оператор "=", нагружая выполнение операции именно на него, поскольку только в этом операторе известен адрес приемника результата. Тогда как операторы действий "+", "-", "*" возвращают у меня всего лишь малую структуру с адресами обоих операндов, флагами их транспонирования и типом операции (т.е. два адреса и один байт с флагами). Вот поэтому мне и интересны чужие реализации "прикручивания". Тем более что реализация в лоб сопровождается дополнительным копированием результирующей матрицы, возвращаемой оператором, в приемник на этапе присваивания этого результата. А при больших матрицах эта довольно накладно, т.к. помимо копирования включает в себя деаллокацию промежуточного объекта, не говоря уже о необходимости его предшествующей аллокации. Т.е. результат операции при реализации в лоб переносится через промежуточный объект размером во всю матрицу, потому его при каждой операции приходится аллокировать, деаллокировать и дважды копировать его содержимое. Тогда как на этапе присваивания ("=") уже могут быть известны все три адреса, чтобы можно было запустить на них стандартную библиотечную функцию.
|
|
|
|
|
Dec 30 2014, 15:11
|
Местный
  
Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778

|
Цитата(Xenia @ Dec 30 2014, 07:45)  Если матрица диагональная, то ее хранят в векторе  . А такие свойства, как симметрия и эрмитовость, обычно не позволяют ускорить операции сложения, вычитания и умножения, поскольку для этого требуется, чтобы ОБА операнда обладали таким свойством. Что же касается разряженных матриц, то это скорее не алгебраическая проблема, а ... "процессоростроительная", т.к. касается только того, способен ли FPU быстрее выполнять бинарные операции, если один из операндов нулевой. Причем, в электронной реализации (а так же на FPGA) такая проверка операндов на нулёвость не привела бы к замедлению арифметики с прочими числами, поскольку признак нулёвости регистра всегда можно сделать схемотехническим, экстренно отменяющим выполнение операции. Но если процессоростроители этого не предусмотрели, то проверять каждый операнд на нулёвость в программе будет не менее накладно по времени, чем честно умножать на нуль. Я говорю о "compile time" оптимизациях, то есть во время выполнения уже не будет производится умножения на ноль или единицу. В фильтре Калмана таким образом можно много операций исключить. Симметрия матриц ковариации тоже помогает делать меньше вычислений, и память экономит. Но руками под каждую задачу это делать долго, и ошибок много. Цитата ...
Отсюда и вопрос мной поставлен так: допускает ли механизм определения операторов языка C++ определить их для матриц и векторов таким образом, чтобы три операции (+,-,*) над ними имели естественно-арифметический вид записи? Если да, то почему это до сих пор не сделано производителями библиотек линейной алгебры? А если где-то уже сделано, то где именно? Если посмотреть на boost обертку над blas то становиться понятно, что есть много вариантов операции *, поэтому они определены через свои названия а не символом умножения.
|
|
|
|
|
Jan 3 2015, 11:17
|

Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-12-05
Из: Perth, WA
Пользователь №: 12 375

|
Добавлю свои 5 копеек... Python для меня - открытие года. Фактически убил во мне юзера Матлаба, коим я пользовался более 10 лет... Есть все что надо - от символьных вычислений и квантовых алгоритмов до мощной графики. Переучиться получилось довольно быстро и весело.  Так что рекомендую!
--------------------
"We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard," - John F. Kennedy in September 1962.
|
|
|
|
|
Jan 4 2015, 08:04
|

Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-12-05
Из: Perth, WA
Пользователь №: 12 375

|
Цитата(Xenia @ Jan 3 2015, 15:29)  А как на Питоне МК программировать? Я не знаю. Мне это не надо  это уже давно не входит в круг моих интересов. Максимум куда дотягиваются мои шаловливые руки - это общение с кучей аппаратуры Agilent/rohde&schwarz по GPIB. Раньше у меня это студент на Matlab делал, но мне всегда казалось что это не comme il faut... так что теперь все работает под python
--------------------
"We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard," - John F. Kennedy in September 1962.
|
|
|
|
|
Jan 4 2015, 10:44
|

Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-12-05
Из: Perth, WA
Пользователь №: 12 375

|
Цитата(ViKo @ Jan 4 2015, 13:07)  Я правильно понимаю, что для этого нужен только бесплатный Питон, и всё? А если передавать заказчику программу управления прибором, то им тоже нужно будет установить питон? Нужно еще как минимум pyVISA Так же это дело может потребовать NI-VISA библиотеки (бесплатые) установить отдельно. У меня это работает и под Windows и под Mac У меня нет заказчиков, работаю для себя  В принципе, всегда можно установить эти вещи, на них нет особо ограничений. Так же известно что можно скомпилировать код python в исполняемый exe файл и делать установку python. Для этого есть много утилит и не только для Windows. Как это будет работать c дрйверами и аппаратурой, я не знаю.
--------------------
"We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard," - John F. Kennedy in September 1962.
|
|
|
|
|
Jan 10 2015, 02:34
|
Профессионал
    
Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942

|
Цитата(Obi @ Jan 4 2015, 13:44)  Нужно еще как минимум ... Какую версию Питона предпочитаете использовать? Хорошо, что кто-то додумался всю эту тучу пакетов и библиотек для Питона, да еще и с нормальной IDE, скомпоновать в один дистрибутив, ориентированный на научные вычисления. PythonXY
Сообщение отредактировал x736C - Jan 10 2015, 03:03
|
|
|
|
|
Jan 10 2015, 17:50
|
Профессионал
    
Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942

|
Цитата(_Pasha @ Jan 10 2015, 15:30)  а также, совсем недавно пересел на spyder, доволен как слоняка. Кто мне может объяснить, чем спайдер хуже указанных анаконды и ху? Спайдер окружение (Scientific PYthon Development EnviRonment), которое использует PythonXY. У меня он запускается под виндой вместе с PythonXY. Просто под Линуксом надо самому собирать все в кучу, насколько понимаю. Поэтому не совсем понятен вопрос «чем спайдер хуже xy?».
|
|
|
|
|
Jan 10 2015, 22:15
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(x736C @ Jan 10 2015, 20:50)  Просто под Линуксом надо самому собирать все в кучу, насколько понимаю. Поэтому не совсем понятен вопрос «чем спайдер хуже xy?». Теперь понятно. ХУ чтоб ставить нужна венда, а ее, скажем так, нету. А до того включал geany, в терминале запускал ipython аццкие муки творчества на больших массивах данных. Уровень конечно супер. А про анаконду кто что может сказать?
|
|
|
|
|
Jan 11 2015, 07:25
|

Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-12-05
Из: Perth, WA
Пользователь №: 12 375

|
Цитата(x736C @ Jan 10 2015, 05:34)  Какую версию Питона предпочитаете использовать? Хорошо, что кто-то додумался всю эту тучу пакетов и библиотек для Питона, да еще и с нормальной IDE, скомпоновать в один дистрибутив, ориентированный на научные вычисления. PythonXYЯ пока использую Python 2.7 + Anaconda + PyCharm CE или iPython (под настроение). Не спрашивайте почему  Наверное, потому что все и так работает.
--------------------
"We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard," - John F. Kennedy in September 1962.
|
|
|
|
|
Feb 13 2015, 23:09
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(Xenia @ Dec 30 2014, 07:45)  Отсюда и вопрос мной поставлен так: допускает ли механизм определения операторов языка C++ определить их для матриц и векторов таким образом, чтобы три операции (+,-,*) над ними имели естественно-арифметический вид записи? Если да, то почему это до сих пор не сделано производителями библиотек линейной алгебры? А если где-то уже сделано, то где именно? На сколько понимаю, вопрос про смешанную арифметику (матрицы-вектора), но не очень понимаю в чем проблема. В с++ можно определить операторы, не являющиеся членами класса и принимающие два разных аргумента //умножение матрицы справа на вектор vec operator*(const mat& left, const vec& right); //умножение матрицы слева на скаляр mat operator*(const double& left, const mat& right); ну и т.п. Смешанная арифметика реализована в библиотеке it++, http://sourceforge.net/projects/itpp/, это достаточно простая и не очень быстрая (из-за отсутствия ленивых вычислений) библиотека, LAPACK-BLAS используются. Но мне ее вобщем хватает. Не хватает только размещения маленьких матриц на стеке, матрицы и вектора всегда создаются в куче. Для использования лучше брать последний код из git. Релизы у них очень старые. Для сборки используется cmake. Если ищете производительности и навороченности, то лучше смотреть в сторону armadillo, http://arma.sourceforge.net/, Тут все - отложенные вычисления, использование BLAS-LAPACK, матлаб-подобный синтаксис. Есть несколько проблем - не все поддерживается для матриц с произвольными типами данных внутри (для double, std::complex<double> проблем нет, но есть скажем для int), сложноватый код (широко используется шаблонное метапрограммирование) для тех, кто не очень ориентируется в с++. Впрочем, использование библиотеки проблем не вызовет.
|
|
|
|
|
Feb 26 2015, 11:50
|

unexpected token
   
Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987

|
Интересная тема. Обожаю Matlab со всеми его плюшками для обработки и визуализации экспериментальных данных, GUI и прочими прелестями. Однако, дико бесит отсутствие мультизадачности, как в C++, на котором раньше создавал программы для работы с периферийными устройствами. Банальный пример: нужно отправить данные в периферию и ждать результата измерений, но делать это не в основном трэде чтоб вся GUI не висла, а в фоне. Такое в матлабе невозможно кроме случая прикручивания C-шной библиотеки с отдельно написанным трэдом. Посему изучаю переход на что-нибудь совмещающее в себе матлабовскую лёгкость в обработке данных, красивую визуализацию и мультитрэдинг. Видимо, это будет Phyton, но не хотелось бы еще один язык изучать.
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
Mar 12 2015, 15:32
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Цитата(alexunder @ Feb 26 2015, 14:50)  Интересная тема. Обожаю Matlab со всеми его плюшками для обработки и визуализации экспериментальных данных, GUI и прочими прелестями. Однако, дико бесит отсутствие мультизадачности, как в C++, на котором раньше создавал программы для работы с периферийными устройствами. Банальный пример: нужно отправить данные в периферию и ждать результата измерений, но делать это не в основном трэде чтоб вся GUI не висла, а в фоне. Такое в матлабе невозможно кроме случая прикручивания C-шной библиотеки с отдельно написанным трэдом. Посему изучаю переход на что-нибудь совмещающее в себе матлабовскую лёгкость в обработке данных, красивую визуализацию и мультитрэдинг. Видимо, это будет Phyton, но не хотелось бы еще один язык изучать. Если мне не изменяет память, ничего не стоит запустить вторую инстанцию матлаба и заставить их общаться через локальные сокеты. Я вроде где-то даже пример видел.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|