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
,只是想知道为什么当他再次看到代码时