【发布时间】:2017-03-01 02:52:40
【问题描述】:
我正在尝试查找矩阵 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 同时增加的情况,以便我可以打印矩阵中零的位置?
谢谢
【问题讨论】:
-
为什么不只是
disp([x y])?你真的需要x吗?