加载中…
个人资料
felonwan
felonwan
  • 博客等级:
  • 博客积分:0
  • 博客访问:628,289
  • 关注人气:118
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

Matlab中使用系统命令

(2010-08-14 15:21:46)
标签:

matlab

外部系统命令

系统路径

分类: 程序Linux电脑学习
原创,转载请注明作者及来源。

其实这样做是想在matlab里调用一些外部程序做一些事。比如在m文件里导入数据,而数据是一个外部程序多次改变参数执行得到的,把执行外部程序的命令放m文件里,要省事不少;再比如,把linux下matlab创建的太大的原始视频文件压缩处理放在一起(因为linux下matlab自带的avifile的压缩选项只有'none',也就是说Linux下没法在matlab内部进行压缩。

1. 方法
在matlab中执行一条外部系统命令的方法(不仅仅是Unix系的,windows也是一样的):
! command
比如说linux下
! ls
! mkdir test
更好的使用方法(这个方法也是适用于windows的):
system('command')
[status, results]=system('command')
[status, results]=system('command','-echo')
第一个直接在命令窗口中显示运行中的提示
第二个如果调用成功,status会返回0,如果失败返回其它值,在命令窗口是没有输出的,但是所有字符保存在results中
第三个和第二个一样,只是还强制在命令窗口中显示运行信息。

这个方法之所以更好,还有一个原因就是可以给命令传递字符变量。

2. 系统路径(环境变量)
用getenv('PATH')命令可以获得当前的“系统路径”(可执行文件的搜索路径)。

在matlab中可以这样增加系统路径(本次matlab会话有效,重启失效):
path1 = getenv('PATH')             %获得系统路径的字符串
path1 = [path1 ':/usr/local/bin']   %字符串中加入自己要的路径
setenv('PATH', path1)                %设置系统路径
!echo $PATH                              %输出以查看之

要想每次使用matlab都有效,可以在matlab的启动脚本matlabroot/toolbox/local/startuprc.m中加入上面的代码。

当然你也可以自己在shell中改整个系统路径的PATH喽。

偶然又看到Linux下可以用下面这样调用系统命令,未研究,补充记下(http://www.zdh1909.com/html/matlab/17112.html):
if isunix
  unix(['epstopdf ',filename,'.eps']);              % 如果是 linux 系统的话,将 eps 图像转换为 pdf 图像
end

另外,执行系统命令时可能遇到Matlab自带的库不兼容外部程序的情况:
比如:$MARLAB/version/sys/os/glnx86/libgfortran.so.3: version `GFORTRAN 1.4' not found (required by exe_filename)
解决办法就是把系统的库链接过去:sudo ln -sf /usr/lib/i386-linux-gnu/libgfortran.so.3.0.0 $MATLAB/sys/os/glnx86/libgfortran.so.3
(参考:http://judsonsnotes.com/notes/index.php?option=com_content&view=article&id=611:matlab-running-external-programs&catid=57:programming&Itemid=81)

参考英文资料:

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有