结合 2 个矩阵的信息来查找值

Combining information of 2 matrices to find values

提问人:user5618251 提问时间:1/18/2016 最后编辑:Adriaanuser5618251 更新时间:1/19/2016 访问量:39

问:

我有 2 个矩阵:一个大小为 286 x 720 的二进制矩阵,其中 0 = 没有机场,1 = 机场所在的像素。其次,我有一个人口矩阵,其大小相同,但每个细胞中的人口总数相同。现在我想找到有机场和最多人居住的地方的像素。那么,如何找到哪个机场像素的人口数量最多(仅考虑机场像素时的人口最大值)?

MATLAB 矩阵 匹配

评论


答:

3赞 Adriaan 1/18/2016 #1
Airport = randi(2,286,720)==1; %// airport grid
People = randi(1e3,286,720); %// people grid

PeopleOnAirport = People(Airport); %// logical mask
MaxPeople = max(PeopleOnAirport(:)); %// find maximum
[Pixel(:,1),Pixel(:,2),~] = find(People==MaxPeople); %// finds the location of the maximum.

矩阵是二进制矩阵,因此您可以将其用作矩阵的逻辑索引。然后,一个简单的调用 就足以找到最大人数,可以使用 .位置存储在 中,第一列是行号,第二列是位置的列号。如果有多个位置包含该最大人数,则每行都包含一个位置。AirportPeoplemaxfindPixelPixel

评论

0赞 Daniel 1/18/2016
若要使用逻辑索引,必须创建逻辑矩阵:Airport = randi(2,286,720)==1;
0赞 Daniel 1/18/2016
最好使用,以防万一多次达到最大值[Pixel(:,1),Pixel(:,2),~] = find(People==MaxPeople);
0赞 Adriaan 1/18/2016
@Daniel谢谢,我更新了它。我应该注意到你第一条评论的内容。我更新并添加了您的建议,谢谢