2016-04-08 8 views
-3

Angenommen, wir haben eine Matrix und wir wollen für jeden Wert in jede Zeile in der ersten Spalte dieser Matrix suchen. Am Ende speichert MATLAB die gesamten Zeilen der Werte, die der ersten Spalte entsprechen.Wählen Sie eine Zeilenmatrix von Werten basierend auf der Suche

Zum Beispiel wir diese Matrix

A = [... 
1 0 0; 
2 0 0; 
3 0 0; 
1 2 0; 
1 3 0; 
2 3 0; 
1 2 3; 
4 0 0; 
5 0 0; 
6 0 0; 
4 5 0; 
4 6 0; 
5 6 0; 
4 5 6; 
7 0 0; 
8 0 0; 
9 0 0; 
7 8 0; 
7 9 0; 
8 9 0; 
7 8 9]; 

Das gewünschte Ergebnis würde unten haben gezeigt, wenn wir für den Wert von 1 entlang der ersten Spalte suchen sind:

B = ... 
[1 0 0; 
1 2 0; 
1 3 0; 
1 2 3]; 
+1

Uhm ... was? Können Sie uns ein kleines Beispiel für die erwartete Leistung geben? – rayryeng

+0

Ich schrieb Beispiel –

+0

im Allgemeinen möchte ich Matlab Suche nach allen Wert bedeutet zuerst [1] als [2] als [3] –

Antwort

0

Aber, wenn Sie kenne den Wert, nach dem du suchst, warum speicherst du nicht einfach seinen Index anstelle des realen Wertes? Ich meine, wenn Sie wissen, dass Sie nach '5' auf Ihrer Matrix A suchen, warum speichern Sie nicht seine Position in einer neuen Variablen?

Nun, wenn Sie die komplette Reihe präsentieren wollen, die den Wert enthält ...

Es gibt eine Vielzahl von Möglichkeiten, dies zu tun.

Angenommen, Sie haben eine Matrix A und möchten die Zeilen zurückgeben, die '5' Elemente enthalten.

% Define matrix A 
A = [1 2 4; 0 1 2; 4 5 6]; 

% Supposing user wants to find 5 
value = 5; 

% This returns a matrix where 1 are the elements equal to value in 'A' matrix. 
elements = (A == value); 

% These are the indices of the elements 
[row col] = find(ans==1); 

% Creating new variable B with the rows that contains value (5 in this case) 
B = A(row); 
+0

Das sollte technisch sein' B = A (row, :); 'Doing' B = A (row) 'würde nur Elemente in der Reihenfolge der Spalten in Bezug auf die erste Zeile von' 1 'bis zu so vielen auswählen Zeilen wie in der Matrix. Dies würde das gewünschte Ergebnis nicht erreichen. – rayryeng

+0

Ja Kumpel. Ich wollte gerade das Büro verlassen und habe das nicht versucht. Danke für deine Beobachtung. –

Verwandte Themen