Filter löschen
Filter löschen

How to find the another values in array

1 Ansicht (letzte 30 Tage)
singh
singh am 18 Apr. 2015
Bearbeitet: Stephen23 am 4 Mai 2015
Suppose I have a array A=
1 73.21 32.2
6 11.1 3.32
9 30.4 19.64
17 12.6 77.3
20 30.7 6.2
23 21 .9 42.5
Now I have another array which contain some values B =
1 9 20 23
Now I input a single no through input command called N=20
I wish to find that N(20) in column first and return corresponding values column second and column third in array A
Like it return value 30.7 and 6.2
  1 Kommentar
pfb
pfb am 18 Apr. 2015
Thanks for choosing my answer.
Anyway the other two other answers are perhaps better, in that they do not use "find".

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

pfb
pfb am 18 Apr. 2015
You could use the command "find".
% this finds the row (if any) at which N appears in the first column of A
r = find(A(:,1)==N);
% this returns the corresponding values in the 2nd and 3rd columns of A
v = A(r,[2 3]);
% note that this is a row vector if N appears only once in the first column of A
% It is a matrix if N appears more than once
% It is an empty vector if N never appears.
  1 Kommentar
Stephen23
Stephen23 am 4 Mai 2015
Bearbeitet: Stephen23 am 4 Mai 2015
find is slower and not at all required. Use Image Analyst's solution.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Image Analyst
Image Analyst am 18 Apr. 2015
Just use logical indexing. You don't even need find().
A=[...
1, 73.21, 32.2;
6, 11.1, 3.32;
9, 30.4, 19.64;
17, 12.6, 77.3;
20, 30.7, 6.2;
23, 21.9, 42.5]
% B is unused - not sure why it was even mentioned
B =[1 9 20 23];
N = 20; % Gotten from using the input() function.
row = A(:,1)==N % N must be an integer.
output = A(row, 2:3)

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by