一、背景
在使用 Matlab 过程中,需要读取 .mat 数据使用,使用 load 命令之后赋给一个变量,发现并不是把 mat 数据的内容赋给这个变量,而是赋值了一个结构体。所以在使用时,问题在于这个结构体内变量名是未知的,所以没办法直接使用。
二、解决办法
fieldnames:获取一个未知的 struct 的所有 field;
getfield:返回 struct 中指定字段的值。
% 创建一个结构体
tmp.a = 1;
tmp.b = 2;
tmp.c = 3;
save tmp tmp;
clear tmp;
% 载入 mat 数据
val_struct = load('tmp.mat'); % 载入 mat 数据,出来是一个结构体,我们需要的变量是【结构体.变量名】
val_names = fieldnames(val_struct); % 获取结构体后那个未知的变量名
val = getfield(val_struct, val_names{1}); % 读取该变量名下的数据,并重新命名变量名val
(参考:matlab load函数变量的名字,解决matlab load文件不知道变量名的问题)
(参考:matlab 列出struct中所有的fields----fieldnamea)
(参考:getfield)