本文共 1909 字,大约阅读时间需要 6 分钟。
标 题】: Scilab 工具箱的初步开发和使用 【关键字】: Scilab Scilab 工具箱的初步开发和使用 大家一般都是比较熟悉 Matlab ,但是有些时候下必须使用其它的软件 比如,如果没有授权的 Matlab,VC ,与一些同行交流时 而且,我们越来越依赖于几个商业软件了 长此以往,我们就被套在 Matlab 上了 好在开源人士和一些开明的团体 提供了一些别的选择, GNU 有 Octave, 语法和 Matlab 差不多,不过工具箱很少,开发也不是很活跃 感觉上 GNU 不能在方方面面都做到最好 法国国立自动化研究所开发了 Scilab ,它的应用越来越广了 尤其在中科院自动化所的中法联合实验室的推广下 Scilab 的工具箱有一些,但是还是太少 比较实用的有图像处理工具箱 SIP ,是由巴西人写的 包含了一个很有用的工具集 中科院的几个研究生也写了一个视频和图像处理的工具箱 不过,他们用到了 Intel 的 opencv ,这在 FreeBSD 下是没有的 因此对 BSD 一族真是扼腕痛惜的事 前几天装了一下 SIP , delphij 建议写个 port , 目前太懒,正在做一个图像处理的项目,完了之后估计会写吧 首先要下在 ANIMAL 最新的版本 ,configure 没问题 make 时 ,src 目录下的大部分 C 文件都要注释掉 #include <malloc.h> 这一句 祥见 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 的 因为 Scilab 低层是 Fortran 的, 以后也徐会写一个 intersci 的接口吧 现在麻烦点,总比以后被 matlab 卡了脖子要好啊转载地址:http://owfmf.baihongyu.com/