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 不会警告你在evalevalin 中的错误,...)。所以请帮自己一个忙,不要在不必要的时候使用这些! 问题是提到的函数更多地用作测试脚本,而不是从命令行窗口启动调用,我想直接从编辑器调用函数,这就是问这个问题的原因.不过感谢您的建议! :) 您可以做一些不同的事情。首先,您可以将其设为脚本而不是函数(只需省略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 的值。

通常不鼓励使用evalevalin,因为这会使您的代码更难理解和重用。

【讨论】:

以上是关于Matlab - 工作区变量的使用的主要内容,如果未能解决你的问题,请参考以下文章

使用动态名称访问 Matlab 工作区变量

如何把matlab中的变量输入到工作空间

Matlab:如何通过鼠标单击(使用'ButtonDownFcn')将多个变量点从绘图保存到工作区?

matlab 批量运算命名变量

matlAB如何保存变量

在单元格中使用字符串保存 Matlab 变量