找回密码
 注册
Simdroid-非首页
查看: 457|回复: 2

【原创】创建自已的Toolbox一些方法与建议

[复制链接]
发表于 2006-9-2 13:55:49 | 显示全部楼层 |阅读模式 来自 广东深圳
创建自已的Toolbox一些方法与建议

为了增加代码或模块通用性与规范性,最好的方法便是建立自已的工具箱;我以前写程序也喜欢规纳与总结成自已的库,但是毕竟精力有限,只是做一个简单的堆积,没有规范的文档。现在很荣幸有时间投入到这项工作中,所以分享一些精验,也希望得到一些指点。
以下所述是针对matlab7.1的,主要计划是建立某个以simulink模块为主加上m文件函数的工具箱。

1. m文件函数的文档可用htm文件, 在文件头注释中可加入"参见"与"doc"链接,形如
function varargout=my(T)
% XXXXXXXXXXXXX
% 例:     r=my(T)  
% 参见
%     <a href="matlab:help my2">my2</a>
%
% <a href="matlab:helpview('C2Q.htm')">doc C2Q</a>

这样 help my 就会在命令窗口提示链接。

2. 为每一个字目录(除了private与help)编写Contents.m文件,典型格式如下:
% ==================================================================
% Contents of XXXX
% ==================================================================
%
%<a href="matlab:help my">my</a>              - XXXX model

这样 help+目录名 就可以在命令窗口提示链接,可以从主目录链接到各子目录。

3. 为工具箱编写安装程序,如install.m,内容包括路径添加,欢迎界面,特定的初始化工作,在系统工具箱中添加所需通用文件等。为了不用设次都运行install.m,可以在其中加入读写starup.m的代码。例如,运行一次install后,我的startup.m增加如下代码:
%$$
% -------------- Codes Generated from XXXX Library 1.0 ---------------

if exist('E:\XXXXX\install.m')
  run('E:\XXXXX\install.m')
end

% -------------------------------------------------------------------
%$$

这样每次重启matlab后自动运行install,可以看到漂亮的欢迎界面。

4. 为工具箱编写反安装程序,如uninstall.m,把写入startup.m的内容除去,去除所添加路径,把更改系统工具箱的地方改回来。

5. Simulink模块库的搭建框架是,一个主模块文件,其结构是封装的各级目录,但不包括具体模块。每部分具体模块是一个文件,通过主在模块文件中用回调函数"openfcn"打开。

6. 要想simulink模块库在simulink browser中显示,需要在路径中添加slblocks.m文件,其具体内容可参考帮助。

7. mdl模块中不出现中文或全角字符,模块的SavedCharacterEncoding采用默认值或'GBK', Matlab的CharacterEncoding采用默认的'GBK'(参见slCharacterEncoding); m文件函数, C文件S-function可以有中文字符.

8.  mdl模块文档可用htm文件, 添加方法为Edit mask->Mask help,再输入helpview('myhelp.htm').可为整个模块库建立Contents.htm文件,以树型结构链接到各模块文档。文档间的链接可以包括:类似模块文档间的链接,返回目录的链接,与演示文档的链接,邻近模块的链接等。

9. mdl模块中若有S-function最好用C语言的版本.m file的S函数不支持编译(可以加tlc文件,好象更复杂).

10. mdl模块中不应有Matlab Fcn模块,不支持编译,可以用Matlab Embedded Fcn模块.

11. mdl模块中可以有Stateflow模块,是支持编译的,但stateflow中不应有像"ml.disp"这样的matlab语言。

12. mdl模块若用到原有模型库的模型时link不能打断,这样更新某个模块,用到它的模块也同样更新。

13. 要隐藏模块的内部结构,可将其编译为c-mex S-函数(点右键Generate S-function)。

还存在的问题是C-mex function用到的公用函数的管理,以及两相s-function同时include一个c文件无法编译的问题,还有模块库的发布形式问题。欢迎有兴趣的朋友提出建议并一起讨论。

[ 本帖最后由 nostalgica 于 2006-9-2 13:57 编辑 ]

评分

1

查看全部评分

发表于 2006-9-18 03:16:29 | 显示全部楼层 来自 云南昆明
Simdroid开发平台
谢谢楼主了.好帖子,支持!!!
goodapple 该用户已被删除
发表于 2006-12-25 15:18:03 | 显示全部楼层 来自 LAN
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-16 13:50 , Processed in 0.039782 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表