2017-03-01 7 views
0

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

+1

Warum nicht einfach 'disp ([x y])'? Brauchst du wirklich das 'x' dazwischen? – beaker

Antwort

0

Try this:

[x,y]=find(B==0); 

for i=1:length(x) 

    fprintf('%g x %g\n',x(i),y(i)) 

end 

Vektoren x und y die gleiche Länge haben und die Paare Sie die gleiche Indexnummer haben in diesen Vektoren drucken möchten.

+0

omg danke Kumpel! das funktioniert –

+0

@EricKim Bitte akzeptieren Sie die Antwort, wenn dies Ihr Problem gelöst hat. –

+0

Ich bin neu auf dieser Website, und ich bin mir nicht sicher, ob ich Ihre Antwort akzeptiert habe, aber ich habe das Häkchen neben Ihrer Antwort angeklickt. So funktioniert es hier? –

0

Sie [row,col]=find(~X) müssen, finden Sie MATLAB here Referenz

Verwandte Themen