在GUI matlab中使用Workspace变量

时间:2015-01-29 23:41:50

标签: matlab neural-network workspace matlab-guide

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

有办法吗?

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

但是我收到了这个错误:

  

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

2 个答案:

答案 0 :(得分:3)

从问题的措辞来看,finalnet是先前存储的工作空间,finalnet.mat位于某个目录中。我们假设当前目录。

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

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

答案 1 :(得分:1)

你这里有点不对劲。据我所知,只有以下类型的Matlab工作区:

  1. 基础工作区:
    • 存储您直接从命令窗口创建的变量,或使用assignin('base', 'varname', value)
    • 您可以使用var = evalin('base', 'varname')从任意位置访问基本工作区的变量,也可以直接从命令窗口使用它们
  2. 功能工作区:
    • 每个函数在启动时都会创建自己的工作区。它与基础工作区分开。在此函数中,您仍然可以访问1)
    • 中提到的基本工作空间变量
    • 除非您调用函数
    • ,否则无法从命令窗口访问函数工作区变量
    • 如果您的函数(假设test1)调用另一个函数(假设为test2),则在函数test2中,您可以test1访问var = evalin('caller', 'varname_in_test1_workspace')的工作空间变量}。如果您希望函数test2使用test1工作空间中的变量,请将它们作为test2的输入参数传递
  3. 全球工作空间:
    • 存储多个工作区可以使用(共享)的变量。
    • 您必须在要使用的所有工作区中使用global varname声明它们。 (即在函数test1test2中,使用相同的global varname命令,如果要从命令窗口访问变量,即使在命令窗口(基础工作区)中也是如此)
  4. 回到你的问题:我相信没有办法在Matlab中建立一个名为finalnet的工作区。您收到错误,因为Matlab中没有这样的finalnet工作区。您可能会错误解释上次通过保存基本工作空间变量获得的.mat文件与工作空间本身之间的错误解释。所以你可能首先需要加载.mat文件,里面的变量将加载到Matlab的基础工作区,然后你可以根据需要从你的函数中访问它们。