乔延柯的博客分享 http://blog.sciencenet.cn/u/bewinner 在通往梦想的路上

博文

Matlab中在base和function中互相调用变量

已有 5800 次阅读 2014-12-28 19:10 |个人分类:工作求职|系统分类:科研笔记| MATLAB

问题:
命令用的是evalin,执行语句如下:
evalin(‘base’,expression)
但该命令用于不需要输入的M文件时没有任何问题,一旦转换为需要输入的matlab函数,总是执行不通过。并报错表达式中变量未定义。
解决记录:
1.查看报错记录为表达式中未定义,怀疑是base中工作区与函数工作区不一致导致。
因此搜索了base工作区与函数工作区互相调用变量的方法:
可以声明变量为global,这里要注意一个问题,需要在调用函数的地方和函数内部同时声明,并且保持变量名称一致才能保证变量传递不会出错。
2.修改了变量定义后,重新执行,仍旧报错。
查看函数evalin,调用函数工作区变量需要更改工作区。因此修改执行语句如下:
evalin('caller', expression)
3.修改后,执行通过,未报错,但查看工作区变量,变量内容未真正执行语句。
折腾无果后,改用函数eval,执行后通过,变量内容也发生变化。
总结
查看eval函数,在说明文档中有如下一段话:
Why Avoid the eval Function?
Although the eval function is very powerful and flexible, it not always the best solution to a programming problem. Code that calls eval is often less efficient and more difficult to read and debug than code that uses other functions or language constructs.
也是醉了,这个问题看来是没有什么终极解决办法了。。。


https://wap.sciencenet.cn/blog-496389-854560.html

上一篇:好书推荐---看见成长的自己
下一篇:2014年个人总结
收藏 IP: 58.38.9.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-29 03:23

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部