Arrays Matlab中无环结构数组的数组获取

Arrays Matlab中无环结构数组的数组获取,arrays,matlab,loops,struct,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 我需要从这个结构中创建两个数组,分别称为区域和质心。 如何使它没有循环 使用循环,

我有一个带有一些对象的二值图像,我想得到这些对象的一些特征

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
我需要从这个结构中创建两个数组,分别称为
区域
质心
。 如何使它没有循环

使用循环,我们可以这样做:

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
你可以简单地用concat

Areas = [RP.Area];
Centroids = vertcat( RP.Centroid );
PS,
这是最好的。

你可以简单地

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

这是最好的。

呵呵,这太简单了!谢谢是的,这些天我已经修改了我的代码,我不认为
I
j
会对运行时间或开销产生很大影响。另外,
1i
1j
是表示虚数的正确方法。如果您自己编写代码,请确保始终使用
1i
,如果您在一家公司工作,在这件事上应该有实践。当然,将
i
用作变量可能容易出错,但我个人并不反对它。除非你能证明使用
i
作为循环变量会显著降低性能,否则我会这么说。否则代码很好+1@patrik我同意避免使用
I
作为变量是一种好的做法,而不是“必须”,但我们正在努力推广更好的做法。例如,请参阅@Shai,避免使用
i是否是一种良好做法取决于您的习惯。有其他编程语言经验的人(不使用
i
作为复数)可能将
i
作为其生活中的循环变量。对于嵌套循环,他甚至可能使用了一组特殊的循环变量
i,j,k,…
,来跟踪他目前处于哪个循环中。在这种情况下,我会说改变这种行为是一种不好的做法。有问题的人几乎肯定会在某个循环中插入一个
i
,只是想知道为什么当他再次看到代码时,它就这么简单!谢谢是的,这些天我已经修改了我的代码,我不认为
I
j
会对运行时间或开销产生很大影响。另外,
1i
1j
是表示虚数的正确方法。如果您自己编写代码,请确保始终使用
1i
,如果您在一家公司工作,在这件事上应该有实践。当然,将
i
用作变量可能容易出错,但我个人并不反对它。除非你能证明使用
i
作为循环变量会显著降低性能,否则我会这么说。否则代码很好+1@patrik我同意避免使用
I
作为变量是一种好的做法,而不是“必须”,但我们正在努力推广更好的做法。例如,请参阅@Shai,避免使用
i是否是一种良好做法取决于您的习惯。有其他编程语言经验的人(不使用
i
作为复数)可能将
i
作为其生活中的循环变量。对于嵌套循环,他甚至可能使用了一组特殊的循环变量
i,j,k,…
,来跟踪他目前处于哪个循环中。在这种情况下,我会说改变这种行为是一种不好的做法。有问题的人几乎肯定会在某个循环中滑入一个
i
,只是想知道为什么当他再次看到代码时