从 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
参考文献:
我有一个 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
参考文献: