You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Scilab中基于现有代码创建可调用自定义工具箱

完全可以实现,Scilab原生支持自定义工具箱打包,配置完成后即可像print、disp等内置函数一样直接调用,具体操作步骤如下:

1 代码预处理
  • 首先将所有需要对外暴露的可调用函数(包括你的主程序逻辑、需要开放给外部使用的子例程)统一整理为.sci格式:如果你的主程序当前是直接运行的.sce脚本,需要改写为函数结构,示例如下,修改后保存为[函数名].sci:
function [输出参数1, 输出参数2] = 你的主函数名(输入参数1, 输入参数2)
    // 原.sce文件的逻辑写在这里
endfunction
  • 不需要对外暴露的内部子例程可保留原有逻辑,统一存放即可。
2 搭建标准工具箱目录结构

Scilab工具箱有固定目录规范,首先新建一个根目录(命名示例:phd_calc_toolbox),目录内包含以下子目录和文件:

  • /src:存放所有.sci源码文件,包括对外暴露函数和内部子例程
  • /etc:存放工具箱启停配置文件,必须包含[工具箱名].start和[工具箱名].quit两个文件
  • /help:可选,存放自定义的函数帮助文档,配置完成后用户可通过help [函数名]直接查询用法
  • loader.sce:工具箱加载入口脚本
3 编写核心配置文件

3.1 etc/[工具箱名].start

工具箱加载时自动执行的脚本,作用是加载所有函数到Scilab工作区,示例内容:

// 获取当前文件所在路径
current_path = get_absolute_file_path("[工具箱名].start");
// 切换到源码目录加载所有sci文件
chdir(current_path + "../src/");
exec("*.sci", -1); // -1代表静默加载,不会打印加载日志
// 切回原路径
chdir(current_path);

3.2 loader.sce

根目录下的对外加载入口,示例内容:

toolbox_root = get_absolute_file_path("loader.sce");
exec(toolbox_root + "etc/[工具箱名].start");
disp("[你的工具箱名] 已成功加载,可直接调用对应函数");

3.3 etc/[工具箱名].quit

工具箱卸载时执行的脚本,没有特殊清理需求可以留空。

注意:所有配置文件中的[工具箱名]需要和你根目录的工具箱名称保持一致,避免路径匹配错误。

4 本地测试调用
  • 打开Scilab,切换工作目录到你的工具箱根目录,执行exec("loader.sce")
  • 加载完成后即可直接通过函数名+参数的方式调用,和内置函数使用逻辑完全一致,不需要再手动exec单个.sci文件。
5 打包为可自动安装的原子包(可选)

如果需要更便捷的分发、避免每次手动执行loader,可以打包为Scilab官方的.atoms安装包:

  • 在工具箱根目录新增description.xml文件,填写工具箱名称、版本、作者、适配的Scilab版本等基础信息
  • 在Scilab命令行执行atomsCreateToolbox("你的工具箱根目录绝对路径", "安装包输出路径")即可生成.atoms格式的安装包
  • 其他设备上执行atomsInstall("安装包路径/xxx.atoms")即可完成自动安装,后续Scilab启动时会自动加载工具箱,不需要手动执行加载脚本。

注意事项:对外暴露的函数命名不要和Scilab内置函数、已安装的其他工具箱函数重名,避免命名冲突导致调用异常。

内容的提问来源于stack exchange,提问作者Shankarmani G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:15:05