【问题标题】:Using Workspace variables in a GUI matlab在 GUI matlab 中使用工作区变量
【发布时间】:2015-03-29 09:23:31
【问题描述】:

我有一个名为 finalnet 的工作区。在工作空间内,我有一个名为 net 的神经网络。我想在我的 GUI 中的一项功能中使用网络。

有没有办法做到这一点?

我尝试使用 evalin 功能:network = evalin('finalnet','net')

但我收到此错误:

使用 evalin 未知命令选项时出错。

【问题讨论】:

  • 我对神经网络一无所知,但您可以尝试在您的网络中使用setappdatagetappdata 吗?
  • @Benoit_11 我只想打电话给网络。

标签: matlab neural-network workspace matlab-guide


【解决方案1】:

从您的问题的措辞看来,finalnet 是以前存储的工作区,因此finalnet.mat 位于某个目录中。让我们假设当前目录。

在这种情况下,您需要将load 工作区添加到您的 GUI 中。假设这是在某个随机回调函数中,您想调用load finalnetload('finalnet.mat')。现在工作区在本地可用于您的回调函数,您可以访问您的net

如果在运行 GUI 之前调用 load finalnet,则需要在函数中使用 net = evalin('base','net') 访问 net。如果您对基础工作区中的net 或其他变量进行了任何更改,并且您希望这些更改在退出GUI 后仍保持不变,那么您必须调用assignin('base','net') 或您更改的任何变量。

【讨论】:

  • 这很有帮助,我们不是每次在 GUI 中调用函数时都需要加载工作区吗?有没有办法加载一次工作区,然后在每个 GUI 函数中使用变量?
【解决方案2】:

你这里有问题。据我所知,Matlab 工作空间只有以下几种:

  1. 基础工作区:
    • 存储您直接从命令行窗口或使用assignin('base', 'varname', value) 创建的变量
    • 您可以使用var = evalin('base', 'varname') 从任何地方访问基础工作区的变量,或直接从命令行窗口使用它们
  2. 函数工作区:
    • 每个函数在启动时都会创建自己的工作区。它与基本工作区分开。在此函数中,您仍然可以访问 1) 中提到的基本工作区变量
    • 除非您调用函数,否则无法从命令行窗口访问函数工作区变量
    • 如果您的函数(假设为test1)调用另一个函数(假设为test2),则在函数test2 内,您可以通过var = evalin('caller', 'varname_in_test1_workspace') 访问test1 的工作区变量。如果您希望函数test2 使用test1 工作区中的变量,请将它们作为test2 的输入参数传递
  3. 全局工作区:
    • 存储可供多个工作区使用(共享)的变量。
    • 您必须在要使用的所有工作区中使用global varname 声明它们。 (即在 test1test2 两个函数中,使用相同的 global varname 命令,如果您想从命令行窗口访问变量,即使在命令行窗口(基本工作区)中也是如此)

回到你的问题:我相信没有办法在 Matlab 中拥有一个名为 finalnet 的工作区。您收到错误是因为 Matlab 中没有这样的 finalnet 工作区。您可能会误解上次通过保存基本工作区变量获得的 .mat 文件和工作区本身。所以可能你首先需要加载.mat文件,里面的变量将被加载到Matlab的基础工作区,然后你可以根据需要从你的函数中访问它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    相关资源
    最近更新 更多