Scilab工具箱的初步开发和使用

2009-05-13 01:53:55来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

大家一般都是比较熟悉Matlab,但是有些时候下必须使用其它的软件
比如,如果没有授权的Matlab,VC,与一些同行交流时
而且,我们越来越依赖于几个商业软件了
长此以往,我们就被套在Matlab上了
好在开源人士和一些开明的团体
提供了一些别的选择,
GNU有Octave,语法和Matlab差不多,不过工具箱很少,开发也不是很活跃
感觉上GNU不能在方方面面都做到最好
法国国立自动化研究所开发了Scilab,它的应用越来越广了
尤其在中科院自动化所的中法联合实验室的推广下
Scilab的工具箱有一些,但是还是太少
比较实用的有图像处理工具箱SIP,是由巴西人写的
包含了一个很有用的工具集
中科院的几个研究生也写了一个视频和图像处理的工具箱
不过,他们用到了Intel的opencv,这在FreeBSD下是没有的
因此对BSD一族真是扼腕痛惜的事
前几天装了一下SIP,delphij建议写个port,
目前太懒,正在做一个图像处理的项目,完了之后估计会写吧
首先要下在ANIMAL最新的版本,configure没问题
make时,src目录下的大部分C文件都要注释掉#include 这一句
祥见scilab port 的Makefile,里面又一个替换的语句,就是针对这个情况
make install就把库文件和一些头文件放到/usr/local/lib/animal和
/usr/local/include/animal里去了

然后下载Scilab Image Processing Toolbox 4.0rc-1
make时,src里的sip_config.h有一行 UndefinedCompressQuality,两头加上引号""
unwrap_***.c那个文件有一个变量s,前面的声明多打了一个字符u
即ulong s=0改为long s=0
然后make OK
make install
安装到/usr/local/lib/scilab/contrib/sip里面

起动scilab
exec "/usr/local/lib/scilab/contrib/sip/loader.sce"
就起动了SIP了
新的SIP里有rgb2hsv之类的函数,有hough变换、Radon变换
真是解了我燃眉之急
在没有Matlab的日子里真是痛苦啊,不过一点点会过去的
最近的项目要用wavelet,
找遍了Internet,免费的wavelet C代码真是很少
做这些研究的都是只对他们的研究项目感兴趣,不想把工具箱做完善,
其实这也没什么可抱怨的,人家为什么要为你服务呢
最后发现了GNU Scientific Library里有wavelet的库
虽然也不完善,但是总比没有好
我就打算写一个接口程序,在Scilab里调用GSL的库
开始写C接口程序
第一个难题,写Perl写多了
感觉C约束太多
独立的写了一个程序,C调用没问题
但是在scilab里一调用就退出
scilab里如何能gdb呀?:-(
于是就写printf给控制台发消息吧
发现传给C的字符参数有问题
原来是传双精度数据用stk,字符用cstk
我都用了stk,还有,没有指定输出变量的存储开的大小
大致格式是
intgsldwt(char *fname)
{
检查输入变量,输出变量的个数
输入输入变量,检查维数
创建输出变量,给出维数,内存开多大
调用C程序 gsldwt();
}
gsldwt()
{
数学运算
}
从/usr/local/lib/scilab/examples/interface-tutorial-so
里拷一个builder.sce到当前目录
改为自己要连接的库
启动scilab
执行builder.sce
和loader.sce
然后就可以用了
大致步骤是这样,具体还要调整
SIP是用的intersci的接口
要把C转成Fortran的

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:实现IPv6:KAME项目的经验

下一篇:技巧:自己动手做2.4G无线网络定向天线