我有一个名为 finalnet 的工作区。在工作区内,我有一个名为 net 的神经网络。我想在我的GUI中的一个功能中使用网络。
有办法吗?
我尝试使用 evalin 功能:network = evalin('finalnet','net')
但是我收到了这个错误:
使用evalin未知命令选项时出错。
答案 0 :(得分:3)
从问题的措辞来看,finalnet
是先前存储的工作空间,finalnet.mat
位于某个目录中。我们假设当前目录。
在这种情况下,您需要将load
工作区添加到GUI中。假设在一些随机回调函数中,您想要调用load finalnet
或load('finalnet.mat')
。既然工作区在本地可用于您的回调功能,您可以访问net
。
如果您在运行GUI之前致电load finalnet
,则需要在功能中使用net
访问net = evalin('base','net')
。如果您对基础工作区中的net
或其他变量进行了任何更改,并且您希望在退出GUI后仍保留这些更改,那么您必须调用assignin('base','net')
或您更改的任何变量。
答案 1 :(得分:1)
你这里有点不对劲。据我所知,只有以下类型的Matlab工作区:
assignin('base', 'varname', value)
var = evalin('base', 'varname')
从任意位置访问基本工作区的变量,也可以直接从命令窗口使用它们test1
)调用另一个函数(假设为test2
),则在函数test2
中,您可以test1
访问var = evalin('caller', 'varname_in_test1_workspace')
的工作空间变量}。如果您希望函数test2
使用test1
工作空间中的变量,请将它们作为test2
的输入参数传递global varname
声明它们。 (即在函数test1
和test2
中,使用相同的global varname
命令,如果要从命令窗口访问变量,即使在命令窗口(基础工作区)中也是如此)回到你的问题:我相信没有办法在Matlab中建立一个名为finalnet
的工作区。您收到错误,因为Matlab中没有这样的finalnet
工作区。您可能会错误解释上次通过保存基本工作空间变量获得的.mat
文件与工作空间本身之间的错误解释。所以你可能首先需要加载.mat
文件,里面的变量将加载到Matlab的基础工作区,然后你可以根据需要从你的函数中访问它们。