将函数工作区中的变量放入基础工作区
Putting variables from Function workspace to base workspace
我有一个调用函数的脚本,调用一个函数来模拟一个模型。第二个函数还加载 simulink 模型查找表所需的变量。现在,如果我 运行 它,matlab 告诉我,它不知道那些变量。所以我假设,变量必须在基础工作区中,simulink 才能识别它们,我试图调用
vars=whos;
for k_laden=1:length(vars)
assignin('base', vars(k_laden).name, eval(vars(k_laden).name))
end
在第二个函数中,但是 matlab 告诉我
??? The variable "ans" is undefined.
Error in ==> esm6 at 76
assignin('base', vars(k_laden).name, eval(vars(k_laden).name))
Error in ==> Optimierung_Querdynamik_MBT at 87
y = esm6(param_komplett,identi);
Error in ==> Identi at 176
[param_plotten , guete_wert] = Optimierung_Querdynamik_MBT(ESM_Wahl,Plotten,param_plotten,identi);
有谁知道如何解决这个问题?提前致谢。
编辑:
simulink 需要的变量由加载命令创建。因此,如果您给我一种从函数调用加载命令但直接将变量加载到基础工作区的方法,这可能会有所帮助。
如果我可以定义 simulink 模型正在使用哪个工作区,它也可能会有所帮助。
默认情况下,Simulink 在基础工作区中查找,但假设您通过在函数中使用 sim
函数来仿真模型,那么只需在函数工作区中定义变量并使用
sim('modelname','SrcWorkspace','current');
我有一个调用函数的脚本,调用一个函数来模拟一个模型。第二个函数还加载 simulink 模型查找表所需的变量。现在,如果我 运行 它,matlab 告诉我,它不知道那些变量。所以我假设,变量必须在基础工作区中,simulink 才能识别它们,我试图调用
vars=whos;
for k_laden=1:length(vars)
assignin('base', vars(k_laden).name, eval(vars(k_laden).name))
end
在第二个函数中,但是 matlab 告诉我
??? The variable "ans" is undefined.
Error in ==> esm6 at 76 assignin('base', vars(k_laden).name, eval(vars(k_laden).name))
Error in ==> Optimierung_Querdynamik_MBT at 87 y = esm6(param_komplett,identi);
Error in ==> Identi at 176 [param_plotten , guete_wert] = Optimierung_Querdynamik_MBT(ESM_Wahl,Plotten,param_plotten,identi);
有谁知道如何解决这个问题?提前致谢。
编辑:
simulink 需要的变量由加载命令创建。因此,如果您给我一种从函数调用加载命令但直接将变量加载到基础工作区的方法,这可能会有所帮助。
如果我可以定义 simulink 模型正在使用哪个工作区,它也可能会有所帮助。
默认情况下,Simulink 在基础工作区中查找,但假设您通过在函数中使用 sim
函数来仿真模型,那么只需在函数工作区中定义变量并使用
sim('modelname','SrcWorkspace','current');