在 GUI matlab 中使用工作区变量

Using Workspace variables in a GUI matlab

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

有办法吗?

我尝试使用 evalin 函数:network = evalin('finalnet','net')

但是我得到这个错误:

Error using evalin Unknown command option.

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

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

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

你这里有问题。据我所知,只有以下类型的 Matlab 工作区:

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

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