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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: `eval` 函数MATLAB 编程语言中的一种内置函数,它的作用是调用字符串代表的 MATLAB 语句或表达式。 `eval` 函数可以接收一个字符串作为参数,该字符串可以是一个数学表达式或 MATLAB 代码。当 `eval` 函数执行时,它将解释并执行这个字符串中的代码或表达式并返回结果。在 MATLAB 编程中,`eval` 函数通常用于动态地生成 MATLAB 程序,也可以用于计算数学表达式的值。 但是,使用 `eval` 函数需要慎重考虑其安全性。因为该函数使得代码动态生成,可能会被滥用和攻击,具有一定的安全风险。为此,建议不要将 `eval` 函数应用于不可信的输入,而应该使用更安全的方法完成代码编写和执行。 ### 回答2: MATLABeval函数是一种非常有用的工具,它可让开发人员根据需要执行MATLAB表达式。虽然MATLAB的强大功能常常用于数值计算,但是eval函数则可以扩展MATLAB的功能,使得开发人员能够编写更为复杂的算法和可视化工具。 eval函数可以接受一个MATLAB表达式的字符串作为输入,并在执行时将其解释为有效的MATLAB语句。这样,开发人员就可以在运行时动态地创建和修改MATLAB代码,从而增加代码的灵活性和可重用性。使用eval函数的一些特点如下: 1.如果eval函数的输入字符串代表一个语法正确而且自我包含的MATLAB语句,那么这个表达式将被执行。 2.如果eval函数的输入字符串含有语法错误,那么MATLAB会提示错误,并且不会执行这个表达式。 3.如果eval函数的输入字符串含有非法的或者危险的操作(比如删除某些文件或者修改系统变量),那么MATLAB会停止执行这个表达式,并发出警告信息。 4.如果在eval函数执行期间发生异常,那么eval函数会抛出这个异常,并且不会继续执行这个表达式。 eval函数的用途非常广泛,可以用于创建任意复杂度的算法,可以用于在运行时动态生成和修改MATLAB代码,还可以用于编写可视化界面和交互式应用程序等。总的来说,eval函数MATLAB开发人员的一个非常有用的工具,可以让他们更加灵活和高效地开发出各种应用和工具。 ### 回答3: MATLAB中有一个重要的函数叫做eval,它的作用是可以将一个字符串作为MATLAB代码来执行。eval函数MATLAB编程中非常常用,它能够解决一些动态生成代码的需求,是一种非常灵活的代码逻辑。 eval函数的基础语法非常简单,它可以直接接受一个字符串参数,例如: ```matlab eval('x = 1+1; disp(x);'); ``` 这里的eval函数会将字符串“x = 1+1; disp(x);”作为MATLAB代码来执行,并输出结果“2”。 eval函数的参数可以是任意合法的MATLAB代码片段,包括函数调用、变量赋值、控制语句等等。这也意味着,eval函数会执行任何你传递给它的字符串,包括非法的语法和语义错误。因此,在使用eval函数时,我们必须非常小心,确保传递给它的字符串是正确且安全的。 另外需要注意的是,由于eval函数需要将字符串解析成可执行的MATLAB代码,因此它的执行速度相对较慢,而且会占用较多的内存和CPU资源。因此,除非必要,我们应该尽量避免使用eval函数,尤其是在循环或者复杂结构中使用。 总之,eval函数MATLAB编程中一个非常重要和灵活的函数,可以帮助我们实现动态生成代码的需求,但需要注意安全和性能问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值