我正在尝试找到矩阵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参考