从 Matlab 结构中提取数据

Data extraction from Matlab structs

我有一个 Matlab 结构,我想从中提取数据。

我已经编写了几行代码来完成这项工作,但我对使用大括号的不那么麻烦的过程感兴趣。我该怎么做?

我的代码复制如下:

area = table2array(cell2table({result2.Area}))';
area = area';
centroid_coordinates = table2array(cell2table({result2.Centroid}));
centroid_coordinates = reshape(centroid_coordinates, 2, length(result2))';
bounding_box = (table2array(cell2table({result2.BoundingBox})))';
bounding_box = reshape(bounding_box, 4, length(result2))';

您似乎在尝试连接结构索引的输出:

centroid_coordinates = table2array(cell2table({result2.Centroid}));
centroid_coordinates = reshape(centroid_coordinates, 2, length(result2))';

话虽如此,也许 this post on MATLAB Answers 是相关的。

在这种情况下,看到这些是您正在处理的结构中的 same-dimension 项,您应该能够在括号中使用 [res.Centroid] 来水平连接数据,或者 vertcat(res.Centroid) 垂直连接数据。

我正在使用以下重现数据,它是一个结构数组,与您的图像具有相似形状的数据:

cent1 = [1,2];
cent2 = [3,4];
res(1).Centroid = cent1;
res(2).Centroid = cent2;

并重现您的输出:

% Using method in question
withCurly = table2array(cell2table({res.Centroid}));
withCurly = reshape(withCurly, 2, length(res))';

% Using vertcat
withVert = vertcat(res.Centroid);

isequal(withCurly, withVert)
% ans = 1

参考文献: