在 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 finalnet
或 load('finalnet.mat')
。现在工作区在本地可用于您的回调函数,您可以访问您的 net
.
如果您在 运行 GUI 之前调用 load finalnet
,那么您需要在函数中使用 net = evalin('base','net')
访问 net
。如果您对基础工作区中的 net
或其他变量进行了任何更改,并且您希望即使在退出 GUI 后仍保留这些更改,那么您必须调用 assignin('base','net')
或您更改的任何变量。
你这里有问题。据我所知,只有以下类型的 Matlab 工作区:
- 基础工作区:
- 存储您直接从命令 Window 或使用
assignin('base', 'varname', value)
创建的变量
- 您可以使用
var = evalin('base', 'varname')
从任何地方访问基础工作区的变量,或者直接从命令 Window 中使用它们
- 函数工作区:
- 每个函数在启动时都会创建自己的工作区。它与基本工作区分开。在此函数中,您仍然可以访问 1)
中提到的基本工作区变量
- 无法从命令 Window 访问函数工作区变量,除非您调用函数
- 如果您的函数(假定
test1
)调用另一个函数(假定 test2
),在函数 test2
中,您可以通过 [= 访问 test1
的工作区变量16=]。如果您希望函数 test2
使用 test1
工作区中的变量,请将它们作为 test2
的输入参数传递
- 全局工作区:
- 存储多个工作区可以使用(共享)的变量。
- 您必须在要使用的所有工作区中使用
global varname
声明它们。 (即在两个函数 test1
和 test2
中,使用相同的 global varname
命令,即使在命令 Window (基础工作区)中,如果你想从命令 [=60 访问变量=])
回到你的问题:我相信在 Matlab 中没有办法有一个名为 finalnet
的工作区。你得到错误是因为在 Matlab 中没有这样的 finalnet
工作空间。您可能会误解上次通过保存基础工作区变量获得的 .mat
文件和工作区本身。所以可能你需要首先加载 .mat
文件,里面的变量将被加载到 Matlab 的基础工作区,然后你可以根据需要从你的函数中访问它们。
我有一个名为 finalnet 的工作区。在工作区内,我有一个名为 net 的神经网络。我想在我的 GUI 中的一个功能中使用网络。
有办法吗?
我尝试使用 evalin 函数:network = evalin('finalnet','net')
但是我得到这个错误:
Error using evalin Unknown command option.
从你的问题的措辞来看,finalnet
是一个以前存储的工作区,因此 finalnet.mat
位于某个目录中。让我们假设当前目录。
在这种情况下,您需要 load
将工作区添加到您的 GUI 中。假设这是在某个随机回调函数中,您想调用 load finalnet
或 load('finalnet.mat')
。现在工作区在本地可用于您的回调函数,您可以访问您的 net
.
如果您在 运行 GUI 之前调用 load finalnet
,那么您需要在函数中使用 net = evalin('base','net')
访问 net
。如果您对基础工作区中的 net
或其他变量进行了任何更改,并且您希望即使在退出 GUI 后仍保留这些更改,那么您必须调用 assignin('base','net')
或您更改的任何变量。
你这里有问题。据我所知,只有以下类型的 Matlab 工作区:
- 基础工作区:
- 存储您直接从命令 Window 或使用
assignin('base', 'varname', value)
创建的变量
- 您可以使用
var = evalin('base', 'varname')
从任何地方访问基础工作区的变量,或者直接从命令 Window 中使用它们
- 存储您直接从命令 Window 或使用
- 函数工作区:
- 每个函数在启动时都会创建自己的工作区。它与基本工作区分开。在此函数中,您仍然可以访问 1) 中提到的基本工作区变量
- 无法从命令 Window 访问函数工作区变量,除非您调用函数
- 如果您的函数(假定
test1
)调用另一个函数(假定test2
),在函数test2
中,您可以通过 [= 访问test1
的工作区变量16=]。如果您希望函数test2
使用test1
工作区中的变量,请将它们作为test2
的输入参数传递
- 全局工作区:
- 存储多个工作区可以使用(共享)的变量。
- 您必须在要使用的所有工作区中使用
global varname
声明它们。 (即在两个函数test1
和test2
中,使用相同的global varname
命令,即使在命令 Window (基础工作区)中,如果你想从命令 [=60 访问变量=])
回到你的问题:我相信在 Matlab 中没有办法有一个名为 finalnet
的工作区。你得到错误是因为在 Matlab 中没有这样的 finalnet
工作空间。您可能会误解上次通过保存基础工作区变量获得的 .mat
文件和工作区本身。所以可能你需要首先加载 .mat
文件,里面的变量将被加载到 Matlab 的基础工作区,然后你可以根据需要从你的函数中访问它们。