我怎么访问基本工作空间变量在函数?

765(30天)
我想改变变量的值的基础工作,从一个函数。例如,我有一个函数“myfcn”。它接受字符串作为输入,包含变量的名称空间中存在的基础。我想改变这些变量的值的基础工作,而无需通过函数的输出。

接受的答案

MathWorks支金宝app持团队
此增强功能已经纳入释放2006 b (R2006b)。之前的产品发布,读下面的任何可能的解决方法:
EVALIN函数允许您评估在两个specfied工作区命令:“基地”(MATLAB的基本工作空间),和“来电”(工作区)的函数被调用。的情况下的函数被称为基本工作空间,这两个工作空间是相同的。您将需要创建一个字符串,将评估适当的MATLAB表达式,为了执行任务。
使用EVALIN示例:
函数myfcn (varname)
i = 1:尺寸(varname, 1)
如果iscellstr (varname),
evalin (“基地”,(varname{我}“=”mat2str(我)“;”])
elseifischar (varname)
evalin (“基地”[deblank (varname(我:))“=”mat2str(我)“;”])
结束
结束
ASSIGNIN函数将值赋给变量在同一个指定的工作区。这可以让你避免与EVALIN字符串转换是必要的。
使用ASSIGNIN示例:
函数myfcn (varname)
i = 1:尺寸(varname, 1)
如果iscellstr (varname),
assignin (“基地”我,varname {},)
elseifischar (varname)
assignin (“基地”deblank (varname(我,:)),我)
结束
结束
5个评论
沃尔特·罗伯森
沃尔特·罗伯森 2022年4月23日
@Tong赵 不,那不是真的。
lives_in_base = 1;
function_that_uses_evalin ();
在电话,function_that_uses_evalin报告lives_in_base = 1 function_that_uses_evalin尝试使用evalin lives_in_base 2后企图改变,function_that_uses_evalin报告lives_in_base = 2
流(“function_that_use_evalin终止后,回到基地,lives_in_base = % g \ n ',lives_in_base);
function_that_use_evalin终止后,回到基地,lives_in_base = 2
函数function_that_uses_evalin
oldv = evalin (“来电”,“lives_in_base”);
流(在调用,function_that_uses_evalin报告lives_in_base = % g \ n ',oldv);
evalin (“来电”,“lives_in_base = 2;”)
流(“function_that_uses_evalin尝试使用evalin lives_in_base改为2 \ n”)
newv = evalin (“来电”,“lives_in_base”);
流(试图改变后,function_that_uses_evalin报告lives_in_base = % g \ n ',newv);
结束

登录置评。

更多的答案(0)

类别

找到更多的在数据类型识别帮助中心文件交换

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!