可赶上机器学习的课了,原来学过《集体编程智慧》里面机器学习算法的Python实现,这次想着有个巩固提高。可是老师偏偏使用Octave,杂就杂吧,学学matlab风格的编程也不错。 Matlab是一款数值计算和分析的优秀软件,可是价格昂贵。其开源替代品就是Scilab和Octave。
Scilab是由INRIA(法国国立计算机及自动化研究院)和ENPC(法国国立桥梁学院)开发的开源科学计算自由软件。与Matlab类似,Scilab数据类型丰富,可以很方便地实现各种矩阵运算与图形显示,能应用于科学计算、数学建模、信号处理、决策优化、线性/非线性控制等各个方面。它还提供可以满足不同工程与科学需要的工具箱,例如Scicos,信号处理工具箱,图与网络工具箱等。可以说,就基本的功能如科学计算、矩阵处理及图形显示而言,Matlab能完成的工作Scilab都可以实现。由于Scilab的语法与Matlab非常接近,熟悉Matlab编程的人很快就会掌握Scilab的使用。有意思的是,Scilab提供的语言转换函数可以自动将用Matlab语言编写的程序翻译为Scilab语言。
GNU Octave是自由软件基金会支持的遵循GPL协议的一个自由再发布的软件,作者是以John W.Eaton为首的一些志愿者。它提供了一个环境,该环境支持叫做GNUOctave的高级语言,这种语言与Matlab兼容,主要用于数值计算。它提供了一个方便的命令行方式,可以数值求解线性和非线性问题,以及做一些数值模拟。 Octave也提供了一些工具包,可以解决一般的线性代数问题,非线性方程求根,常规函数积分,处理多项式,处理常微分方程和微分代数方程。它也很容易的使用Octave自带的接口方式扩展和定制功能。
Octave相对于Scilab,对Matlab的语法兼容性更好,几乎没有差别。比如,Octave也使用M文件的形式来扩展功能和定义函数。因此熟悉Matlab的用户更容易接受Octave环境。 它可编程的性能更好,Octave语言功能更为强大,几乎提供所有系统函数的支持,Octave在语法上也更接近C的语法,比如提供++和–这样的预算符。这样,我们可以在Octave环境里面增加一些更为强大和易用的扩展。不象在Matlab和Scilab环境中限制比较多,有时无法充分的利用系统资源。它的计算库都是用C写,而Scilab则基本是Fortran的编写的。这也是一份有用的资源。和GNU下面的其他软件也可以较多协作。劣势就是Octave的功能比起Scilab要简单一些,这使得Octave对一些用户来说意义不如Scilab大。而且Octave目前没有图形界面,只能以命令行方式进行交互。
第一次编程作业的效果图:
将原来的一些编程思路转换成矩阵和矢量是一个挑战,对于复杂一些编程,还是逃不开纠结和调试。