Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在matlab中求矩阵在结构中的位置_Matlab_Struct - Fatal编程技术网

在matlab中求矩阵在结构中的位置

在matlab中求矩阵在结构中的位置,matlab,struct,Matlab,Struct,我正在导入星星的RGB图像U,并执行以下操作: im=rgb2gray(U); img=(im>200); BW=im2bw(img,0); L=bwlabeln(BW,18); b=regionprops(L,'PixelList'); 这个项目的目标是在这张由数百颗恒星组成的图片中找到最大最突出的恒星b是一个2566x1结构数组,包含值大于200的所有点。如果图像中的某个连接区域包含超过200的多个值,b将存储这些点的坐标矩阵。否则,它将只存储单个坐标对 我需要一种方法来查找b中包含

我正在导入星星的RGB图像
U
,并执行以下操作:

im=rgb2gray(U);
img=(im>200);
BW=im2bw(img,0);
L=bwlabeln(BW,18);
b=regionprops(L,'PixelList');
这个项目的目标是在这张由数百颗恒星组成的图片中找到最大最突出的恒星
b
是一个2566x1结构数组,包含值大于200的所有点。如果图像中的某个连接区域包含超过200的多个值,b将存储这些点的坐标矩阵。否则,它将只存储单个坐标对

我需要一种方法来查找
b
中包含矩阵的所有行?如果可能,查找
b
中包含包含30个或更多点的矩阵的所有行的方法?

您可以使用该函数将函数应用于数组中的每个元素。请注意,这只是编写循环的一种较短方法

在这种情况下,您需要将函数
size(b(i).PixelList,1)>30
应用于结构数组
b
的每个元素
i

m = arrayfun(@(x)size(x.PixelList, 1) > 1, b)
这与:

m = false(size(b));
for i=1:numel(b)
   m(i) = size(b(i).PixelList, 1) > 30;
end

矩阵
m
是一个逻辑数组,您可以使用它作为
b(m)
索引。您还可以使用
find(m)

获取索引,如果您还将
'Area'
包含在由
区域属性计算的属性中,则每个组件中的像素数已经达到:

b=regionprops(L,'PixelList','Area');
idx = [b.Area] >= 30;