Matlab - 工作区变量的使用
Posted
技术标签:
【中文标题】Matlab - 工作区变量的使用【英文标题】:Matlab - usage of workspace variables 【发布时间】:2011-07-27 11:28:00 【问题描述】:我想创建一个函数function ExtremePoints = AnalyseData( ScanData )
。
我希望能够在不传递参数 ScanData 的情况下运行该函数,在这种情况下,我想使用来自 Matlab Workspace 的同名变量。
是否可以在函数体内使用工作区中出现的变量 ScanData?
或者我应该先将变量 ScanData 的内容从工作区保存到 .mat 文件中,然后将该文件加载到函数体中?
【问题讨论】:
正如@Edric 已经提到的那样:(强烈)不鼓励这样做,因为您将无法在其他地方正确重用该函数而没有太多痛苦(缺少变量,完全不同的东西存储在@ 987654323@,不太清晰的代码,mlint 不会警告你在eval
或evalin
中的错误,...)。所以请帮自己一个忙,不要在不必要的时候使用这些!
问题是提到的函数更多地用作测试脚本,而不是从命令行窗口启动调用,我想直接从编辑器调用函数,这就是问这个问题的原因.不过感谢您的建议! :)
您可以做一些不同的事情。首先,您可以将其设为脚本而不是函数(只需省略function ...
)。然后,所有变量都将成为您的基础工作区的一部分。所以这可能会变得混乱,为了方便起见,您可能需要使用clear variables; close all; clc;
之类的东西。或者您可以使用run configurations 功能。但是,在版本控制中或在不同的计算机上跟踪这些是很麻烦的。所以两者各有利弊。
【参考方案1】:
这是可能的,也许不完全推荐。方法如下:
function ExtremePoints = AnalyseData( ScanData )
if nargin == 0
ScanData = evalin( 'base', 'ScanData' );
end
% do stuff
如果没有提供输入参数 (nargin == 0
),这将从 base
工作区中提取 ScanData
的值。
通常不鼓励使用eval
和evalin
,因为这会使您的代码更难理解和重用。
【讨论】:
以上是关于Matlab - 工作区变量的使用的主要内容,如果未能解决你的问题,请参考以下文章