在 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然后保存点。但这是非有效的方式。在这方面有人可以帮我吗?
最好的,
您可以使用 sub2ind
将 F
转换为线性索引,然后索引到 R
以获得布尔值。
bool = logical(R(sub2ind(size(R), F(:,1), F(:,2))));
touse = F(bool,:);
我遇到了一个可能非常简单的问题,但我花了一些时间来解决它。我将不胜感激任何帮助。
我有一个索引为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然后保存点。但这是非有效的方式。在这方面有人可以帮我吗?
最好的,
您可以使用 sub2ind
将 F
转换为线性索引,然后索引到 R
以获得布尔值。
bool = logical(R(sub2ind(size(R), F(:,1), F(:,2))));
touse = F(bool,:);