Matlab访问结构

时间:2018-12-03 08:55:29

标签: matlab indexing struct

我正在尝试访问存储在matlab结构中的数据。我有许多文件,试图使过程自动化,但是在使用结构名称(假定它是字符串)访问结构时遇到问题。同样,将结构存储在变量中(如下所示)也不起作用,因为matlab将整个结构附加到变量上。有人对如何执行此操作有想法吗?

%Initialize variables
Data_Struct = load(dirData(1).name);
file_id = fieldnames(Data_Struct);
data = Data_Struct.Trajectories;

这里是包含数据的结构的屏幕截图 enter image description here

2 个答案:

答案 0 :(得分:2)

文件名每次都在更改,因此在加载新结构时需要正确获取文件名。

Data_Struct = load(dirData(1).name);

此行之后

name = fieldnames(Data_Struct);

这将为您提供文件的唯一名称。最后,

data = Data_Struct.(name{1}).Trajectories.Labelled.(name of the data matrix)

答案 1 :(得分:2)

此处的技巧是利用您可以通过结构字段的名称字符串访问以下事实的事实:

C:\ProgramData

因此,在您的情况下,要获取展开值作为单元阵列,可以使用:

name = 'Trajectories'
value = Data_Struct.(name)

UnrolledCell =

3×2细胞阵列

%%Little example copying some of your structure
Data_Struct.Trajectories.Labelled = zeros(10);
Data_Struct.Analog = zeros(10);
Data_Struct.FrameRate = 300;

[UnrolledCell] = getUnrolledVal(Data_Struct,[]);
display(UnrolledCell)

这里的getUnrolledVal函数很简单:

'Labelled'     [10×10 double]
'FrameRate'    [         300]
'Analog'       [10×10 double]