在没有循环的Matlab中从struct数组中获取数组

时间:2014-08-06 07:43:24

标签: arrays matlab loops struct

我有一些包含某些对象的二进制图像,我希望得到这些对象的一些特征。

I = imread('coins.png');
B = im2bw(I, 100/255); B = imfill(B, 'holes');

RP = regionprops(B, 'Area', 'Centroid');

RP成为结构数组:

10x1 struct array with fields:
    Area
    Centroid

我需要从这个结构中创建2个名为AreasCentroids的数组。 如何使它没有循环?

使用循环我们可以这样:

N = numel(RP);
Areas = zeros(N, 1); Centroids = zeros(N, 2);
for idx=1:N, 
    Areas(idx) = RP(idx).Area; 
    Centroids(idx, :) = RP(idx).Centroid; 
end

1 个答案:

答案 0 :(得分:4)

你可以简单地连接

Areas = [RP.Area];
Centroids = vertcat( RP.Centroid );

PS,
最好not to use i as a variable name in Matlab