将 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 分配到当前对象 myStructChannel 字段中=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');