我要做的是,加载多个网络'文件并将它们分配给变量,以便我可以访问它们的内部参数(权重,偏差等)。当我尝试像这样加载每个:
a = load('networkFileName')
然后,变量' a'成为一个内部有网络文件的结构,除非你调用:
,否则不能访问它的参数a.net123
是否有另一种方法可以将网络变量直接加载到另一个变量中?
答案 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