我正在尝试在矩阵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
因此,零位于(1,1)(2,2)(2,3)(3,3)(2,5)(4,5)。 我希望它们打印为1x1,2x2,2x3,3x3,2x5,4x5
使用'find(A ==)'代码很容易读取x,y对,但是很难 如果矩阵的大小增长。比如说,矩阵B的大小是99X99。如何找到所有零的位置并打印出来?
所以我试着写一个代码来做它,但我一直都失败了。
[x,y]=find(B==0);
for i=1:length(x)
for j=1:length(y)
end
fprintf('%g x %g\n',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位置(行#),但是对于y位置(列#)只打印了5个。
我认为这是因为嵌套for循环重复并完成内部循环,然后移动到外部循环。
无论如何i和j同时同时增加,以便我可以在矩阵中打印零的位置吗?
谢谢
答案 0 :(得分:0)
试试这个:
[x,y]=find(B==0);
for i=1:length(x)
fprintf('%g x %g\n',x(i),y(i))
end
向量x和y具有相同的长度,并且您要打印的对在这些向量中具有相同的索引号。
答案 1 :(得分:0)
您需要[row,col]=find(~X)
,请参阅MATLAB参考here