查看: 85|回复: 3|关注: 0

[已解决] 同样代码,MATLAB2014a比MATLAB7.0慢许多

[复制链接]

新手

9 麦片

财富积分


050


2

主题

5

帖子

0

最佳答案
本帖最后由 wangaibo1991 于 2020-3-26 02:53 编辑

在MATLAB2014a和MATLAB7.0版中,执行同一条函数subs,为什么MATLAB2014a的运行速度比MATLAB7.0慢很多?

例如,执行如下程序
  1. syms Par_x Par_y;

  2. % 二维正弦网格
  3. Amp_X=0.5E-3;  Amp_Y=2E-3;  Lamda_X=200E-3;  Lamda_Y=100E-3;  
  4. Surface_Fun=Amp_X*sin(2*pi*Par_x/Lamda_X)+Amp_Y*sin(2*pi*Par_y/Lamda_Y);

  5. % 计算曲面值
  6. [Pos_X,Pos_Y]=meshgrid([-0.5:0.001:0.5],-[-0.5:0.001:0.5]);
  7. tic
  8. Surface_Val=subs(Surface_Fun,{Par_x,Par_y},{Pos_X,Pos_Y});
  9. toc
复制代码
在2014a中耗时203.290975秒,在7.0中耗时0.182s。

我的电脑配置
①CPU:i7-7700HQ 2.8GHz;②内存:12.0GB;③64位Win10操作系统

论坛优秀回答者

18

主题

2237

帖子

453

最佳答案
  • 关注者: 89
发表于 前天 12:50 | 显示全部楼层 |此回复为最佳答案
在我笔记本上,i5,8G,matlab 2019b:Elapsed time is 200.644221 seconds.

现在查询不到matlab 7.0时的subs的文档了,那我的猜测是现在的matlab的subs是符号运算,所以那么多数据点的替换时间长可以理解,7.0 的替换那么快,我感觉就是数值的替换,不是符号运算。你看一下两者的结果的数据类型有什么不同?
多看帮助文档
说明你的matlab版本

MATLAB 基础讨论
版块优秀回答者

入门

224 麦片

财富积分


50500


3

主题

331

帖子

49

最佳答案
  • 关注者: 2
发表于 前天 15:10 | 显示全部楼层
用的符号计算引擎不一样了

新手

9 麦片

财富积分


050


2

主题

5

帖子

0

最佳答案
 楼主| 发表于 前天 20:23 | 显示全部楼层
深蓝孩童 发表于 2020-3-26 12:50
在我笔记本上,i5,8G,matlab 2019b:Elapsed time is 200.644221 seconds.

现在查询不到matlab 7.0时的s ...

您说的很对!经过试验发现:
①7.0版本计算结果确实是数值类型,如下图

7.0版本工作区

7.0版本工作区

②2014a版本计算结果为sym类型,如下图

2014a版本工作区

2014a版本工作区


如下为7.0版本的subs帮助文件截图

7.0版本subs函数帮助文件

7.0版本subs函数帮助文件




您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

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