将 Matlab 属性 保存到 mat 文件
Save a Matlab Property to a mat file
我有一个 class 和一个 struct
属性 叫 myStruct
:
properties
myStruct;
end
我想将结构保存到 .mat
文件中。我试过了:
save -append registers.mat myStruct;
但是报错:
Variable 'myStruct' not found.
我有不同的功能来更新 struct
,例如:
function configureChannel( obj, Channel )
myStruct.Channel = Channel;
save -append registers.mat myStruct;
end
function updateConfiguration( obj, dataPath )
myStruct.EN = 1;
save -append registers.mat myStruct;
end
这些都是同一个class的功能。
我认为这段代码的主要问题是如何从函数中访问 myStruct
。看看下面的一段代码:
function configureChannel( obj, Channel )
myStruct.Channel = Channel;
...
end
您打算让它做的是将 Channel
分配到当前对象 myStruct
的 Channel
字段中=17=] 属性。它实际上所做的相当于调用:
myStruct = struct('Channel', Channel);
也就是你在configureChannel
的当前workspace/scope中新建了一个局部变量,并没有实际更新[=63] =]对象的属性,obj
.
因此,您需要做的第一个更正是如何在 setter:
中访问 myStruct
obj.myStruct.Channel = Channel;
接下来是储蓄的问题
将对象字段的副本转储到文件时,我希望 save
to treat your arbitrary object as a struct
, and so struct
saving conventions 应该适用:
'-struct',structName
| Store the fields of the scalar structure specified by structName
as individual variables in the file. For example, save('filename.mat','-struct','S')
saves the scalar structure, S
.
因此,我希望以下内容能够工作免责声明:我没有测试它:
save('filename.mat','-struct','obj.myStruct');
如果上述方法失败,其他替代方案:
save('filename.mat','obj.myStruct'); % Alternative #1
tmp = obj.myStruct; save('filename.mat','tmp'); % Alternative #2
最后一件事 - 您可能已经注意到,我使用 save
的函数形式,因为我认为它更 maintainable/readable/fool-proof:
save(filename,variables,'-append');
我有一个 class 和一个 struct
属性 叫 myStruct
:
properties
myStruct;
end
我想将结构保存到 .mat
文件中。我试过了:
save -append registers.mat myStruct;
但是报错:
Variable 'myStruct' not found.
我有不同的功能来更新 struct
,例如:
function configureChannel( obj, Channel )
myStruct.Channel = Channel;
save -append registers.mat myStruct;
end
function updateConfiguration( obj, dataPath )
myStruct.EN = 1;
save -append registers.mat myStruct;
end
这些都是同一个class的功能。
我认为这段代码的主要问题是如何从函数中访问 myStruct
。看看下面的一段代码:
function configureChannel( obj, Channel )
myStruct.Channel = Channel;
...
end
您打算让它做的是将 Channel
分配到当前对象 myStruct
的 Channel
字段中=17=] 属性。它实际上所做的相当于调用:
myStruct = struct('Channel', Channel);
也就是你在configureChannel
的当前workspace/scope中新建了一个局部变量,并没有实际更新[=63] =]对象的属性,obj
.
因此,您需要做的第一个更正是如何在 setter:
中访问myStruct
obj.myStruct.Channel = Channel;
接下来是储蓄的问题
将对象字段的副本转储到文件时,我希望 save
to treat your arbitrary object as a struct
, and so struct
saving conventions 应该适用:
'-struct',structName
| Store the fields of the scalar structure specified bystructName
as individual variables in the file. For example,save('filename.mat','-struct','S')
saves the scalar structure,S
.
因此,我希望以下内容能够工作免责声明:我没有测试它:
save('filename.mat','-struct','obj.myStruct');
如果上述方法失败,其他替代方案:
save('filename.mat','obj.myStruct'); % Alternative #1
tmp = obj.myStruct; save('filename.mat','tmp'); % Alternative #2
最后一件事 - 您可能已经注意到,我使用 save
的函数形式,因为我认为它更 maintainable/readable/fool-proof:
save(filename,variables,'-append');