您使用Matlab / F#/ R进行数据分析和建模算法的经验

时间:2009-10-29 08:03:44

标签: matlab r f#

我一直在使用F#一段时间来编写算法,然后再用C ++编写算法,然后用它来检查C ++代码的结果,以及实际记录的数据。

对于事物的建模方面,它非常方便,但对于'数据混搭'类型的东西,从CSV和其他来源提取数据,生成统计数据,绘制图表等,我的同事取笑我(“为什么你自己编码呢?它内置于MatLab“)。

我还有另一位发誓R的同事,他也有“内置”图表。

我知道MatLab,R和F#没有严格的可比性,所以我不是要求'功能比较拍摄'。我只是想知道其他人正在使用这些分析前和分析后的场景,以及他们对它有多高兴。

(如果有人在那里努力将微软图表包装成F#友好的东西,请告诉我,我很乐意参与......)

(注意:这个问题的答案是主观的,但请根据经验)

5 个答案:

答案 0 :(得分:16)

我对F#的经验很少,但关于C ++ / Matlab / R:如果程序的执行的速度最重要,请使用C ++。如果实现的速度是最重要的,请使用Matlab或R.这有很多原因,其中最重要的是其庞大的数学/统计软件包库。

Matlab和R都可以通过并行加速:所以一般来说,我认为实施的速度和质量应该是一个更大的问题。在应用程序的设计中,这就是编程的真正“价值”。如果你能在编写一个好的C ++程序的同时编写3个或4个好的R程序,这不是一个小命题。

关于F#:只要它是微软框架的一部分,它必须提供很多东西。如果您正在使用Visual Studio进行开发或者使用大型.Net项目(例如),那么使用F#可能是有意义的。另一方面,您可以从.Net应用程序调用Matlab和R,因此我可能会认为他们的库应该是一个更大的问题。例如,请参阅this article as an example for Rthe Matlab Builder

长话短说:比较F#和Matlab / R不是一个很好的比较。 F#是一种通用编程语言,而Matlab / R可以被视为大量的数学/数据分析工具包。有些人从F#中调用Matlab或R,以便利用每种语言的好处(例如,请参阅this discussionthis article on Matlab/F#this article on R/F#)。

就图表而言:R在这方面非常强大。请查看the graphics view on CRANthis series of posts on the LearnR blog about Lattice and ggplot2

答案 1 :(得分:6)

为了这些目的,我在matlab和python / pylab上做了一些工作。这些工具“内置”的是一个编程环境,一个shell和gui工具,用于快速查看来自各种来源的数据。

在一些命令中,您可以从拥有csv文件到屏幕上的交互式图,然后以几乎任何格式导出图像。一旦掌握了它,从数据到可视化需要一两分钟。我认为这在C ++世界中并不常见(虽然我看到一些教授的工作流程相当令人印象深刻)。

我试过R,但我不能说它有用。它似乎提供了相同的功能集,但谷歌可能很难获得支持。

如果您花费超过几分钟的时间从数据到使用当前方法进行绘图,那么绝对值得学习其中一种环境。最佳选择取决于您的同事,您的工作环境,经验和预算。

答案 2 :(得分:3)

这是suitable functional language for scientific/statistical computing上一个问题的合理近似双倍,所以你可能想要仔细阅读那里长而细致的答案。

答案往往取决于您的经验和以前的语言培训。我非常希望R用于数据整理/建模/可视化。

答案 3 :(得分:1)

我使用R因为一方面它内置了所有东西,另一方面你仍然可以操作几乎所有东西或从头开始。然而,R对于繁重的计算来说相当慢(尽管我在其中进行了所有蒙特卡罗模拟)。

我认为Matlab最适合数学函数的可用性,R最适合数据输入/操作/可视化/分析/等,而C ++适用于高速子程序。顺便说一句,您可以在R中轻松集成C ++(或C,fortran,...)代码。为什么不在R中读取和操作输入数据,在C ++中应用模型,并在R中分析/可视化输出?

答案 4 :(得分:0)

我总是在MATLAB中对我的模型进行原型设计。如果我的原型足够快,我重构并完成了。如果没有,我回过头来实现C中的某些函数,由MATLAB调用。这需要了解低级语言,如果您正在做任何技术上具有挑战性的事情,我认为总是如此。

如果它发生了,我对this Lisp flavor很感兴趣。