在 Matlab 中掩蔽

Masking in Matlab

我遇到了一个可能非常简单的问题,但我花了一些时间来解决它。我将不胜感激任何帮助。

我有一个索引为0和1的矩阵R(1024x1280 double)和另一个矩阵F(3000x2 double),这是3000个点的位置(当然是R矩阵)。我如何选择 F 矩阵中的点,这些点在 R 矩阵中的位置为 1。 我尝试了以下方法,但仍然没有给我正确的答案:

siz= size(R);
fet = false(siz(1),siz(2));
fet(F(:,1),F(:,2)) = true;
[xf,yf]=find(fet==1 & R==1);`

我知道我可以在F中写一个for循环,一个一个地选择(F(1,1)F(1,2))并检查R矩阵中的相同点是否等于1然后保存点。但这是非有效的方式。在这方面有人可以帮我吗? 最好的,

您可以使用 sub2indF 转换为线性索引,然后索引到 R 以获得布尔值。

bool = logical(R(sub2ind(size(R), F(:,1), F(:,2))));
touse = F(bool,:);