我刚刚阅读了MathWorks的following article,其中介绍了避免eval
函数的重要性,并列出了许多eval
常见用法的替代方法。
阅读完文章后,我的印象是eval
功能既无用也无必要。所以,我的问题是: 时需要eval
函数吗?
答案 0 :(得分:7)
我发现eval
只有一个有用的案例,然后是evalc
种类:当调用内置命令行回调函数时(例如没有;
的行或者disp
来电,您无法修改。例如,当你有一些混淆的函数将大量的东西转储到你的命令窗口时。在这种情况下,最好尝试获取源代码以根据您的需要进行修改,因为使用evalc
会破坏您的性能。否则,我没有找到eval
是最佳解决方案的案例。
我写了一篇详尽的回答,详细说明了为什么你应尽量避免eval
:How to put these images together?
答案 1 :(得分:-3)
在尝试创建具有不同名称的多个数组时,我已经使用了eval。这不是真的推荐,但它适用于我的特定应用程序。例如,如果我想要具有特定名称“matrix1”“matrix2”...“matrixN”的N个矩阵,一种解决方案是手动将它们输入为“matrix1 = something”......“matrixN = somethingelse”。如果N非常大,这并不理想。使用eval,您可以设置一个for循环,它将在每个循环上更改矩阵的名称,并根据相同的N值计算某个值。
当然,理想情况下将它们保存到单元格会更好,但我需要采用我所描述的格式的数组。