Ваш опыт использования Matlab / F # / R для анализа данных и алгоритмов моделирования - PullRequest
10 голосов
/ 29 октября 2009

Я уже некоторое время использую F # для моделирования алгоритмов, прежде чем кодировать их в C ++, а также впоследствии для проверки результатов кода C ++, а также для записи реальных данных.

С точки зрения моделирования это очень удобно, но для таких вещей, как сбор данных, получение данных из CSV и других источников, создание статистики, составление диаграмм и т. Д., Мой коллега дразнит меня без конца (" почему ты сам это кодируешь? это встроено в MatLab ").

И у меня есть еще один коллега, который клянется R, у которого также есть «встроенные» функции построения графиков.

Я знаю, что MatLab, R и F # не являются строго сопоставимыми, поэтому я не прошу «исключение сравнения характеристик». Мне просто интересно, что другие люди используют для таких сценариев до и после анализа, и насколько они им довольны.

(Если есть кто-то, кто работает над упаковкой Microsoft Charts во что-то F # -дружественное, дайте мне знать, я был бы рад участвовать ...)

(Примечание: ответы на этот вопрос будут субъективными, но, исходя из опыта, пожалуйста)

Ответы [ 5 ]

16 голосов
/ 29 октября 2009

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

И 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 о Lattice и ggplot2 .

6 голосов
/ 29 октября 2009

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

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

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

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

3 голосов
/ 29 октября 2009

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

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

1 голос
/ 29 октября 2009

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

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

0 голосов
/ 29 октября 2009

Я всегда прототип своих моделей в MATLAB. Если мой прототип достаточно быстрый, я выполняю рефакторинг, и все готово. Если нет, я возвращаюсь и реализую определенные функции в C, которые будут вызываться MATLAB. Это требует знания языка низкого уровня, что, я думаю, всегда будет иметь место, если вы делаете что-то технически сложное.

Я заинтригован этим ароматом Лиспа , если он когда-нибудь взлетит.

...