Matlab 组合两个矩阵的信息以查找值

Matlab 组合两个矩阵的信息以查找值,matlab,matrix,matching,Matlab,Matrix,Matching,我有两个矩阵:一个大小为286x720的二进制矩阵,其中0表示无机场,1表示机场所在的像素。第二,我有一个人口矩阵,它的大小相等,但每个细胞中居住的人口总数相同。现在我想找到一个有机场和大多数人居住的地方。那么,我如何才能找到哪个机场像素拥有最多的居住人口(当只考虑机场像素时,人口的最大值) 您的Airport矩阵是一个二进制矩阵,因此您可以将其用作人员矩阵的一部分。然后,只需调用max即可找到最大人数,可以使用find追踪到矩阵元素。位置存储在Pixel中,第一列是位置的行号,第二列是位置的列

我有两个矩阵:一个大小为286x720的二进制矩阵,其中0表示无机场,1表示机场所在的像素。第二,我有一个人口矩阵,它的大小相等,但每个细胞中居住的人口总数相同。现在我想找到一个有机场和大多数人居住的地方。那么,我如何才能找到哪个机场像素拥有最多的居住人口(当只考虑机场像素时,人口的最大值)


您的
Airport
矩阵是一个二进制矩阵,因此您可以将其用作
人员
矩阵的一部分。然后,只需调用
max
即可找到最大人数,可以使用
find
追踪到矩阵元素。位置存储在
Pixel
中,第一列是位置的行号,第二列是位置的列号。如果有多个位置包含该最大人数,则每行
像素都包含一个位置。

要使用逻辑索引,您必须创建一个逻辑矩阵:
机场=randi(2286720)==1更好地使用[Pixel(:,1),Pixel(:,2),~]=find(People==MaxPeople)以防多次命中最大值times@Daniel谢谢,我更新了。我应该注意到你第一次评论的内容。我更新并添加了你的建议,谢谢你的回答!
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.