首页 > 解决方案 > 如何将 1 个结构字段保存在另一个已保存结构及其字段中

问题描述

虽然有类似的帖子,但我还没有看到这种在结构中保存结构的场景。

这是我的目标:将一个结构字段保存在已定义的已保存结构中。

我的水果结构已经保存在它的文件夹(.mat)中,里面是:

fruit = 

  struct with fields:

  apples: 5
  oranges: 2
  pineapple: 1

我的目标是在已经保存的结构中添加一个葡萄田。

fruit = 

      struct with fields:

     apples: 5
     oranges: 2
     pineapple: 1

     grapes: 13

这是我的代码:

clc;
clear all;

fruit.apples = 5
fruit.oranges = 2
fruit.pineapple = 1

save('fruit.mat', '-struct', 'fruit')
clear all;
load('fruit.mat')
fruit.grapes = 13
save('fruit.mat', '-struct', 'fruit')

输出:只有葡萄田被保存,没有其他田地:苹果、橙子和菠萝。

目标输出:如何将所有 4 个字段保存在相同的水果结构中?

标签: matlabstructurefield

解决方案


'-struct'保存到 mat 文件时,您要么需要省略参数:

...
save('fruit.mat', 'fruit');
clear all;
load('fruit.mat');
fruit.grapes = 13;
save('fruit.mat', 'fruit');

或者将结构输出 fromload放入一个变量中fruit

...
save('fruit.mat', '-struct', 'fruit');
clear all;
fruit = load('fruit.mat');
fruit.grapes = 13;
save('fruit.mat', '-struct', 'fruit');

当您在包含结构的'-struct'变量之前添加参数save时,该函数将该结构的字段作为单个变量存储在文件中,而不是将结构存储为一个变量。因此,在上面的第二个选项中,文件“fruit.mat”将包含三个变量:applesorangespineapple。没有输出的调用load只会在工作区中创建这三个变量,而不是包含在结构中。您可以通过指定输出将文件中的所有变量收集到一个结构中load


推荐阅读