Ваш опыт с Matlab/F#/R для анализа данных и моделирования алгоритмов

eval часто совершенно законно использовать в таких случаях, если вы не используете произвольный пользовательский ввод или можете белый список простые математические выражения:

 $expr = "$var1 $op $var2";
 $rx_math = '/^
      \d+(\.\d+)? \s*              # numeric
      ([-+\/*<>^%]|>=|<=|==)       # operator
      \s* \d+(\.\d+)?              # numeric
 $/x';
 if (preg_match($rx_math, $expr)) {
      eval("\$result = $expr;");
 }

Написание собственного математического парсера , конечно, весело. Но немного ошибочно в контексте языков сценариев, где это все равно встроенная функция.

10
задан Benjol 29 October 2009 в 08:03
поделиться

5 ответов

У меня очень мало опыта работы с F #, но относительно C ++ / Matlab / R: если скорость выполнения вашей программы является наиболее важной, используйте C ++. Если скорость реализации является наиболее важной, используйте Matlab или R. Это верно по ряду причин, не последней из которых являются их огромные библиотеки пакетов математики / статистики.

И Matlab, и R можно ускорить за счет параллелизма: в общем, я думаю, что скорость и качество реализации должны быть большей проблемой. Вот где настоящая «ценность» программирования - в дизайне приложения. Если вы можете написать 3 или 4 хороших программы R за одно и то же время, необходимое для написания 1 хорошей программы на C ++, это не является второстепенным предложением.

Что касается F #: поскольку он является частью структуры Microsoft, он должен многое предложить. Если вы разрабатываете в Visual Studio или работаете над большим проектом .Net (например), возможно, имеет смысл использовать F #. С другой стороны, вы можете вызывать как Matlab, так и R из приложений .Net, поэтому я бы, вероятно, возразил, что их библиотеки должны вызывать большее беспокойство. Например, см. эту статью в качестве примера для R и Matlab Builder .

Короче говоря: сравнение F # и Matlab / R не является хорошим сравнением . F # - это язык программирования общего назначения, в то время как Matlab / R можно рассматривать как массивные инструменты математического анализа / анализа данных. Некоторые люди вызывают Matlab или R из F #, чтобы воспользоваться преимуществами каждого языка (например, см. это обсуждение , эту статью о Matlab / F # , или эта статья на R / F # ).

Что касается построения графиков: R чрезвычайно силен на этом фронте. Взгляните на графическое представление CRAN и из этой серии публикаций в блоге LearnR о решетке и ggplot2 .

16
ответ дан 3 December 2019 в 16:10
поделиться

Я немного поработал с Matlab и python / pylab для этих целей. Эти инструменты имеют «встроенную» среду программирования, оболочку и инструменты графического интерфейса, предназначенные для быстрого просмотра данных из различных источников.

С помощью нескольких команд вы можете перейти от наличия файла CSV к интерактивному графики на экране, а затем экспорт изображения практически в любом формате. После того, как вы освоитесь, переход от данных к визуализации займет минуту или две. Я думаю, это необычно в мире C ++ (хотя я видел некоторых профессоров с довольно впечатляющими рабочими процессами).

Я пробовал R, но не могу сказать о нем много полезного. Похоже, что он предлагает примерно такой же набор функций, но может быть проблематичным для поддержки Google.

Если вы тратите более пары минут на переход от данных к графику с использованием вашего текущего метода, определенно стоит изучить один из них. среды. Лучший выбор зависит от ваших коллег, вашей рабочей среды, опыта и вашего бюджета.

Я пробовал R, но особо полезного сказать не могу. Похоже, что он предлагает примерно такой же набор функций, но может быть проблематичным для поддержки Google.

Если вы тратите больше пары минут на переход от данных к графику с использованием вашего текущего метода, определенно стоит изучить один из них. среды. Лучший выбор зависит от ваших коллег, вашей рабочей среды, опыта и вашего бюджета.

Я пробовал R, но особо полезного сказать не могу. Похоже, что он предлагает примерно такой же набор функций, но может быть проблематичным для поддержки Google.

Если вы тратите больше пары минут на переход от данных к графику с использованием вашего текущего метода, определенно стоит изучить один из них. среды. Лучший выбор зависит от ваших коллег, вашей рабочей среды, опыта и вашего бюджета.

6
ответ дан 3 December 2019 в 16:10
поделиться

Это разумная близкая к предыдущему вопросу о подходящем функциональном языке для научных / статистических вычислений , поэтому вы можете захотеть просмотреть там длинные и подробные ответы.

Ответы, как это часто бывает, зависят от вашего опыта и предшествующей языковой подготовки. Я очень предпочитаю R для обработки / моделирования / визуализации данных.

3
ответ дан 3 December 2019 в 16:10
поделиться

I always prototype my models in MATLAB. If my prototype is fast enough, I refactor and it's done. If not, I go back and implement certain functions in C to be called by MATLAB. This requires knowledge of a low level language, which I think is always going to be the case if you are doing anything that is technically challenging.

I'm intrigued with this Lisp flavor if it ever gets off the ground.

0
ответ дан 3 December 2019 в 16:10
поделиться

Я использую R, потому что, с одной стороны, в нем все встроено, а с другой стороны, вы все еще можете манипулировать почти всем или начать с нуля. Тем не менее, R довольно медленен для тяжелых вычислений (хотя я выполняю все свои модели Монте-Карло в нем).

Я бы сказал, что Matlab лучше всего подходит для доступности математических функций в целом, R лучше всего для ввода / обработки данных / визуализация / анализ / др., а также C ++ для высокоскоростных подпрограмм. Кстати, вы можете легко интегрировать код C ++ (или C, fortran, ...) в R. Почему бы не читать и не управлять входными данными в R, применять модели в C ++ и анализировать / визуализировать вывод обратно в R?

1
ответ дан 3 December 2019 в 16:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: