MATLAB - 加载网络文件并将它们直接分配给变量

时间:2016-02-23 14:16:24

标签: matlab neural-network

我要做的是,加载多个网络'文件并将它们分配给变量,以便我可以访问它们的内部参数(权重,偏差等)。当我尝试像这样加载每个:

a = load('networkFileName')

然后,变量' a'成为一个内部有网络文件的结构,除非你调用:

,否则不能访问它的参数
a.net123

是否有另一种方法可以将网络变量直接加载到另一个变量中?

2 个答案:

答案 0 :(得分:1)

请参阅文档:

help load

(评论)是的,有直接从帮助中复制的信息:

    load(...) loads without combining MAT-file variables into a structure
array.

要对此进行扩展:如果您未指定输出工作区:

>> whos net123                 % it doesn't exist
>> load ( 'net123.mat' )       % load a file which (may) have a var net123
>> whos net123                 % it now exists.
  Name        Size            Bytes  Class     Attributes

  net123      1x1                 8  double              

这可能很危险,因为您不知道.mat文件中的definataly是什么,所以它有可能覆盖工作区变量并导致代码崩溃......或者没有变量你的变量感兴趣并导致您的代码崩溃...

根据您自己的回答 - 您应该将dynamic fieldnames视为getfield的更现代版本。

答案 1 :(得分:1)

好的,我明白了。可以使用' fieldnames'来访问结构的字段。然后你可以使用' getfield'访问该字段的相应变量。就我而言:

>> a = load('networkFileName');
>> name = fieldnames(a);        % a cell with the Struct's field names
>> newVariable = getfield(a,name{1})

编辑:根据dynamic fieldnames matlabgui使用suggestion

>> a = load('networkFileName');
>> z = fieldnames(a);           % gets you a cell with a's fieldname
>> z = z{1};                    % in my case, the network is in the first cell field
>> newVariable = a.(z);         % this is the desired variable