MATLAB 查找和打印矩阵中特定值的位置



我正在尝试找到矩阵B中所有零的位置,然后打印它们

B=randi([-1 4],5)
 0    -1     1     1     2
 1     0     0     4     0
 1     1     0    -1     2
 3    -1     4     3     0
 3     2     3     3    -1
 [x,y]=find(B==0)
x =
 1
 2
 2
 3
 2
 4
y =
 1
 2
 3
 3
 5
 5

so,零位于(1,1)(2,2)(2,3)(3,3)(2,5)(4,5)中。我希望它们被打印为1x1、2x2、2x3、3x3、2x5、4x5

使用"查找(a ==)"代码读取x,y对很容易,但是很难如果矩阵的大小生长。说,就像矩阵B的大小为99x99一样。我如何找到所有零的位置并打印它们?

所以我试图编写一个执行此操作的代码,但我一直失败。

[x,y]=find(B==0);
for i=1:length(x)
    for j=1:length(y)
    end 
    fprintf('%g x %gn',x(i),y(j))
end

我运行脚本。

>> Untitled8
1 x 5
2 x 5
2 x 5
3 x 5
2 x 5
4 x 5

因此,我的MATLAB代码正确找到了零的X-Location(Row#),但仅打印为Y-Location(列#)。

我认为这是因为嵌套循环重复并完成内部循环,然后继续前进。

无论如何,i和j同时同时增加了,以便我可以在矩阵中打印零的位置?

谢谢

尝试以下:

[x,y]=find(B==0);
for i=1:length(x)
    fprintf('%g x %gn',x(i),y(i))
end

向量X和Y具有相同的长度,并且您想要打印的对具有相同的索引编号。

您需要[row,col]=find(~X),请参见MATLAB参考

最新更新