matlab添加信息到gui,Matlab:将变量从GUI传输到基础工作空间和新变量(静态工作空间,脚本,创建新变量)...

MATLAB文档指定:

如果您尝试动态添加变量,MATLAB会发出错误

匿名函数的工作空间,嵌套函数或

包含嵌套函数的函数。

所以,你的问题很可能是因为你的GUI中的某个按钮的匿名回调直接调用脚本(没有我不得不猜的细节)。如果是这种情况,则将其包装到又一个函数中,这样您就可以将脚本创建的变量与anon函数工作区隔离开来。

设计包装器函数以接受要传递给脚本的变量作为参数,因此脚本将具有所需的内容。另外,请确保不要在包装器中嵌套函数,因为你会遇到同样的问题。

注意:与您期望的相反,函数调用的脚本不会在Base工作区中创建其变量,而是在函数的工作空间中创建。只有从另一个脚本调用它才会使用Base工作区来创建变量。

示例:假设脚本“his_script.m”要求变量invar1和invar2已经位于其可访问的工作区中;脚本的输出(即创建的变量)是变量outvar3和outvar4:

% his_script.m

outvar3 = invar1 + invar2;

outvar4 = invar1 - invar2;

因为没有assignin和evalin我们可以将其包装到函数my_wrapper.m中:

% my_wrapper.m

function [outvar3, outvar4] = my_wrapper(invar1, invar2)

% Pre-create the outputs if the script cannot promise with

% the hand on the Holy Book of Execution Paths that it will

% create all the output variables.

outvar3 = [];

outvar4 = [];

% Call the script

his_script;

end

并且函数参数将作为脚本的输入,函数的返回值将是脚本的输出。

现在,您可以在按钮的匿名回调中使用您的调用包装函数,例如:

% initialization function of your GUI

% ...

set(action_button_handle, 'Callback', action_button_callback);

% ...

% somewhere deep in your GUI code, nested function for

% manipulating the script

function action_button_callback(hObject, callbackdata)

[out1, out2] = my_wrapper(5,3);

display(out1);

display(out2);

end

% ...

我希望这个想法现在更加清晰。请告诉我它是如何运作的。

进一步评论:脚本和函数之间的主要区别之一是脚本没有自己的工作区,而函数则有。脚本使用调用它们的上下文的工作空间。

这意味着您的目标“GUI应该将值传输到工作区而没有别的”会产生误导,因为您不知道脚本的工作区在哪里,除非您调用它首先。

如果您确实希望GUI在Base工作区中写入,那么您应该这样做,但是您应该从控制台窗口手动调用脚本,因为控制台窗口的上下文是基础工作区。或者尝试使用evalin('base', 'script_name;');,但是你需要测试(到目前为止,我抵制了使用这样的东西的诱惑 - 完全是因为很容易搞砸,而且我不想让我感到厌恶。)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更这些源码资源,以适应各平台技术的最发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值