Ich versuche, die Lage aller Nullen in einer Matrix B zu finden, und sieMATLAB 'Suchen & Drucken einer Position eines bestimmten Wertes in einer Matrix
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 drucken, werden die Nullen in befinden (1,1) (2,2) (2,3) (3,3) (2,5) (4,5). Und ich möchte, dass sie als 1x1 gedruckt werden, 2x2, 2x3, 3x3, 2x5, 4x5
Es ist einfach, die x, y-Paare mit 'gefunden (A ==)' Code, aber es wird schwierig sein, zu lesen wenn die Größe der Matrix wächst. Sagen wir, die Größe der Matrix B ist 99X99. Wie finde ich die Orte aller Nullen und drucke sie?
Also habe ich versucht, einen Code zu schreiben, der es tut, aber ich versage immer.
[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
Und ich laufe mein Skript.
>> Untitled8
1 x 5
2 x 5
2 x 5
3 x 5
2 x 5
4 x 5
meiner MATLAB-Code So fand richtig die x-Position (Zeile #) von Nullen, aber nur 5 für y-Position (Spalte #) gedruckt.
Ich denke, es ist, weil verschachtelte für Schleife wiederholt und beendet die innere Schleife, und dann weiter zur äußeren Schleife.
Gibt es trotzdem, dass die i und j gleichzeitig gleichzeitig steigt, damit ich die Stellen von Nullen in der Matrix drucken kann?
Danke
Warum nicht einfach 'disp ([x y])'? Brauchst du wirklich das 'x' dazwischen? – beaker