将变量从Function工作空间放入基础工作空间

时间:2015-12-23 13:38:08

标签: matlab function simulink workspace

我有一个脚本调用一个函数,调用一个函数来模拟一个模型。第二个函数还加载了simulink模型需要查找表的变量。现在,如果我运行它,matlab告诉我,它不知道那些变量。所以我假设,变量必须在base-workspace中,以便simulink识别它们,我试着调用

vars=whos;
for k_laden=1:length(vars)
assignin('base', vars(k_laden).name, eval(vars(k_laden).name))
end

在第二个函数中,但是matlab告诉我

  

???变量" ans"未定义。

     

==>中的错误esm6 at 76               assignin(' base',vars(k_laden).name,eval(vars(k_laden).name))

     

==>中的错误Optimierung_Querdynamik_MBT at 87           y = esm6(param_komplett,identi);

     

==>中的错误识字在176                   [param_plotten,guete_wert] = Optimierung_Querdynamik_MBT(ESM_Wahl,Plotten,param_plotten,identi);

有谁知道如何解决这个问题?提前谢谢。

编辑: simulink Needs的变量由load-command创建。因此,如果您给我一种从函数调用load命令但直接将变量加载到base-workspace中的方法可能会有所帮助 如果我可以定义simulink模型正在使用哪个工作区,它也可能会有所帮助。

1 个答案:

答案 0 :(得分:3)

默认情况下,Simulink在基础工作区中查找,但假设您使用函数中的sim函数模拟模型,那么只需在函数工作区中定义变量并使用

sim('modelname','SrcWorkspace','current');