【问题标题】:Save and load structure array MATLAB保存和加载结构体数组 MATLAB
【发布时间】:2017-02-21 01:00:36
【问题描述】:

我正在尝试在 MAT 文件中保存和加载结构体数组,但每次重新加载时结构体数组都会不断变化。如果保存以下内容并重新加载它,它会一直在前面添加结构。

struct.field1
struct.field2

save data.mat struct

struct = load('data.mat');

我知道这是因为我将文件加载到一个变量中,这使它成为一个结构,如果我只使用它就不会:

load('data.mat')

但是我在函数中调用加载命令,因此我不能使用它。有谁知道如何解决这个问题,所以我不明白:

struct.struct.struct.struct.struct.field1;
struct.struct.struct.struct.struct.field2;

在重新加载 data.mat 文件几次后,只是这样:

struct.field1;
struct.field2;

亲切的问候,

罗马音

【问题讨论】:

  • 你的意思是不知道将通过load命令加载的变量名?
  • 我知道名字,因为我自己保存的,但是不知道如何解决没有得到struct.struct.struct.struct。等等……
  • 那你为什么不能简单地在函数中使用load('data.mat','structure_name')并返回structure_name呢?为什么还要把它赋给变量呢?
  • 因为只是简单的 load('data.mat');在函数内部不起作用。但是 load('data.mat','structure_name');作品。谢谢;)
  • load('data.mat') 也可以在函数内部工作,仅供参考

标签: matlab structure mat-file


【解决方案1】:

为了避免添加更深的嵌套结构,您可以选择使用内容选项将所有字段保存为单独的变量-struct

MystructName.field1 = 0
MystructName.field2 = 1

save('data.mat', '-struct', 'MystructName')

然后将数据加载到一个变量中,我会看到结构没有改变

MyStructName = load('data.mat')
MyStructName = 
    field1: 0
    field2: 1

附言。也许这只是在您的示例中,但是将您的结构命名为 struct 是不好的,因为它会覆盖名为 struct 的 Matlab 内置函数。

【讨论】:

  • 感谢您的回答。是的,一段代码只是一个例子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
相关资源
最近更新 更多