登录论坛

查看完整版本 : 【讨论】如何加快matlab自定义函数的运算速度


tolabfans
2008-03-15, 13:02
我在主程序中调用一个自定义M文件函数,要重复调用很多次,结果运行时间要5分钟。我把函数直接写到程序中来,放到循环中,再运行,只要1分钟。差别怎么这么大。
我查了下调用自定义函数的方法,如下
1命令文件/函数文件+ 函数文件 - 多个 M 文件
2u 函数文件 + 子函数 - 一个 M 文件
3inline - 无需 M 文件
4syms + subs 方式 - 无需 M 文件
5u 字符串 + subs 方式 - 无需 M 文件

可以看不太懂。哪种方法速度最快呢。能够在调用外部M函数的情况下加快速度吗。

dnping
2008-03-15, 14:19
matlab调用函数,并且多次循环下的确速度非常慢,这个也是matlab的一个不足的地方,建议楼主能不用循环就不用循环……
另外,如果调用函数的话,建议楼主还是用matlab本身的函数进行调用,就像楼主帖子里面的第四条和第五条的方式,这个是matlab利用本身函数比如feval等来运算的。调用matlab函数的一个好处就是因为matlab本身有自己的加速程式,软件本身知道自己调用函数或者循环速度慢的缺陷,所以在利用matlab运算的时候其本身就有一个加速程式好加快运算速度。
当然最好的方式还是直接在一个函数体里面运算进行运算,但是不能太复杂,要不然不论在调试还是给别人参考都会带来不便。

tolabfans
2008-03-15, 17:07
matlab调用函数,并且多次循环下的确速度非常慢,这个也是matlab的一个不足的地方,建议楼主能不用循环就不用循环……
另外,如果调用函数的话,建议楼主还是用matlab本身的函数进行调用,就像楼主帖子里面的第四条和第五条的方式,这个是matlab利用本身函数比如feval等来运算的。调用ma...


放在一个函数里太长了,不然也不会想做成子函数。M编程规范说超过二页就要考虑用函数了。程序一长太容易出错了。还好,我只做做测试,别人也不看的,长就长点吧。
对了,已经考虑用C语言改写了,还是比较方便的。结构差不多。用C写的东西编译成可执行文件,可以拿着到处走,更方便

dnping
2008-03-15, 22:16
呵呵,这个还是用matlab方便,C对系统有一种适应性,如果系统环境稍稍有点变化的话,可能C这个程序的执行会出来点问题……