matlab eval函数代替,Matlab自动图例方法-使用eval函数

如何自动加matlab里绘制的窗口中的图例(Legend)

最近写了个数据分析脚本,原来进行绘制数据曲线图表时都是逐个添加图例,对于带绘制数据项较少的时候并没有什么效率的问题,但是当数据量较多的时候,例如经常分析的待比较数据条目多大数十个甚至跟多,逐个添加效率显然较低,而使用自动图例方法则不用担心逐个添加的麻烦,而且当数据条目变化,名称需要修改,自动添加图例几乎不需要调整,免去很多不便。

考虑到上述问题,我一大早花费了1个小时研究出来,看到网上很多人问关于自动添加的方法,我想找个工具箱里的实现应该很容易,可是并没有这么做,于是绞尽脑汁,突然灵光一现,eval() 函数不就可以干这个嘛?

方向对了,很快问题就解决了,利用eval函数可以将字符串转化为待执行语句的功能,最终实现了自动图例的功能。

% legendList就是我们需要用来进行自动图例的图例内容,可以通过自动生成,也可以手动逐个添加

% 当然由于是自动图例,所以循环加入才能体现效率

% yourdata 就是待绘制的数据

legendList = [];

legendNames = ['data1', 'data2', 'data3', 'data4'];

legendNum = size(legendNames, 2);

% 要生成'标点,需要写成'''',四个哦

legendList = strcat('''', legendNames(1), '''');

color = rand(legendNum, 3);

plot(yourdata_x, yourdata_y, 'Color', color(1)])

for i = 2:legendNum

legendName = legendNames(i);

legendList = strcat(',''', legendName, '''');

plot(yourdata_x, yourdata_y, 'Color', color(i), ...]);

end

% 自动图例的关键就是:使用eval函数

% eval函数可以将字符串转化为待执行的语句

eval(['legend(' ,legendList, ');']);

简单介绍eval函数的使用

eval()可以替代用户输入的指令,让matlab来执行

设想eval()需要输入的指令是一串字符,那么我们送给他一串字符不就行了吗?

例如:

x = 5;

y = sin(x) + x;

对于上述y = sin(x) + x如何用eval()来执行呢?

eval(['y=sin(x) + x'])

eval(['y=sin(', num2str(x), ')+', num2str(x)])

这样都可以 eval还有很多别的用法,等到下次碰到需要的时候才回去钻研,毕竟工具这种东西,学会了不用也是会忘得,像这种基本的方法和步骤,要熟练操作,记不起来可以回来看看笔记和博客。 希望本贴对其他正在对自动添加图例困惑的人有所帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值