LabVIEW干货
直播中

冰点正在强大

9年用户 272经验值
擅长:测量仪表 接口/总线/驱动
私信 关注
[Labview经验]

LabVIEW动态调用MATLAB的.M文件

本帖最后由 njrzkj 于 2015-12-29 15:08 编辑

     之前曾发帖求过这方面的相关内容,发现有很多人也有这方面的需求。现在自己弄好了,跟大家分享一下。我们都知道在labview里可以通过matlab脚本这个节点,将MATLAB的程序直接写在这里进行调用。但是这种方法只有在LabVIEW处于非运行状态时才能对其进行操作。现在问题来了:假如老师让学生用MATLAB写一个HDB3编码的程序,每个学生写的可能都不一样,老师没时间一个个的给她们过,验证结果是否正确。然后想用LabVIEW做一个程序,使程序在运行状态的时候能够动态随机的导入学生们写的程序,以验证其是否正常。现在的关键是怎么使LabVIEW在运行的时候能够导入事先写好的.M文件?      关于这个问题,LabVIEW自带的例程里是有一个相似的。可以说是在MATLAB脚本框里调用MATLAB的.M子函数的程序“MATLAB  script  node - Lorenz   Diff  Eq.vi”,打开这个程序可以看到如下所示的调用方式。运行这个程序,名为LorenzEqs的这个M文件将自动导入到程序当中,这时候可以看到前面板上图像的变化过程。
但是,假如这时候我把这里面的语句改一下,例如将"path(path,pa)"注释掉"%path(path,pa)",即不导入这个文件了,这时候再运行程序,前面板上的图像应该为空才对。但是图像还是一样在变化。再者把这里面的几条语句全都注释掉,这样就相当于一个空的MATLAB脚本了,这时候前面板应该是没有任何变化的吧?可是运行程序后发现图像仍然在变化。关掉这个程序,不用保存。再次打开的的时候,先把“%path(path,pa)”注释掉,然后再运行,发现有报错,即在后面要用到LorenzEqs这个子函数的时候没有找到这个.M子函数的文件;去掉注释,把最后一句应用这个子函数的语句注释掉,再运行程序时发现有如下报错。因为把有“t”这个变量的语句注释掉了,程序肯定就会报错了。至此我们可以知道,不是改变语句对程序没有影响,而是一开始就正确运行程序时,被调用的.M函数文件已经加载到LabVIEW的内存当中,这时候再去改变语句,使其不调用这个函数已经没有用,内存中有的,程序会默认从内存里调用来执行。这样就达不到动态性和随机性。更重要的是,每次运行程序之后,调用的文件就被加载到内存中了一直没有释放掉,这样会造成程序在后面的运行中由于内存的泄漏而卡死,使程序的性能下降。      找到问题的关键再去解决问题就容易多了。都是获取文件的路径,用范例里“path(path,pa)”的方式获取到的文件就直接加噪到内存中没有释放掉,这里不是我们所需要的。在MATLAB里获取文件路径的方式还可以通过cd( )函数来获取。cd(str),这里的str是一个char类型的数组,存储了某个文件的路径。我们直接调用这个cd(str)函数就可以实现获取要调用函数的路径。而调用的函数文件保存的名称可能是不一样的,为了能够动态识别文件名,这里用eval( )函数来实现自动识别文件名。y=eval(d)、[y,ys]=eval(d)中的y或[y,ys]表示所调用函数中的返回参数;d为函数文件名字符串。若已知要调用的函数名是什么也可以直接代替这里的eval( ),只要调用形式一致就可以。程序见附件。这里得注意的是,跟MATLAB的要求一样,要调用的.M文件的保存路径必须要是全英文的,否则调用时识别不了路径就会报错。






      第一次发技术贴,语言表达也不太流畅,有什么不对的地方还望谅解。希望能够对大家有帮助就可以了。

附件: 您需要登录才可以下载或查看附件。没有帐号?注册
已退回1积分

回帖(82)

冰点正在强大

2015-12-29 15:10:32
之前说的问题以解决并上传。
举报

renjianhua1986

2015-12-30 22:24:54
学习学习~~~~~~~~~~~~~~~~~~~~
举报

h1654155912.5788

2015-12-31 11:28:11
{:23^^^^^^^^^^^^^6666
举报

冰点正在强大

2016-3-11 16:24:53

看来用这个的人不多啊,都没有顶起来
举报

hui_zhao86

2016-3-13 14:28:08
对于labview与matlab联合仿真的人很有用,谢谢楼主
举报

终身不笑者

2016-5-10 11:19:48
谢谢楼主啊,我刚好也需要用到这个方法,很有帮助的帖子,赶紧下下来看看
举报

冰点正在强大

2016-6-6 11:10:11
引用: 终身不笑者 发表于 2016-5-10 11:19
谢谢楼主啊,我刚好也需要用到这个方法,很有帮助的帖子,赶紧下下来看看

有帮助就好
举报

同类

2016-6-12 11:48:56
这个是需要安装MATLAB才能用吗?
举报

冰点正在强大

2016-6-12 14:34:07
引用: fszysd 发表于 2016-6-12 11:48
这个是需要安装MATLAB才能用吗?

是的。用到MATLAB接口的都要安装MATLAB才可以
举报

李想

2016-8-15 07:15:15
能再贴图讲解一下吗
举报

xxin12345

2016-8-25 10:05:46
这个可以有
举报

junling_china

2016-8-30 15:36:05
M文件调用.vi中的LabVIEW:  执行脚本时出错。来自服务器的错误消息:??? Error using =
举报

冰点正在强大

2016-9-5 11:34:07
引用: junling_china 发表于 2016-8-30 15:36
M文件调用.vi中的LabVIEW:  执行脚本时出错。来自服务器的错误消息:??? Error using =

你妹装matlab吧。只要在labview里用到matlab的接口时,电脑上都必须要装matlab软件才可以。
举报

junling_china

2016-9-19 14:30:46
学习下,谢谢
举报

Jasper

2016-10-8 10:33:54
楼主威武,学习了.
举报

爱吃的丑丫头

2016-10-8 10:39:06
学习学习,也会用到调用
举报

刘儒彬

2016-10-8 11:20:50
顶!!!!!!!!!!!!!!!!!
举报

申铁军

2016-11-2 21:58:08
酷酷酷快快快快快快快快快快快快快快快快
举报

任宗浩

2016-11-3 10:44:42
我想问一下,如果我不需要路径去调取文件,只想在前面板显示图像。做个仿真。。就会报错,
举报
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

更多回帖

发帖
×
20
完善资料,
赚取积分