I have:
  1. Single column array that I converted to table in matlab, which represent RGB values combined in one cell so 255119255 (RRRGGGBBB) -Note: this has 40448352 rows
  2. Imported table with 10 columns. Column 2 defines the object corresponding to the RGB combined value also 255119225 format (column 9) - Note: This has about 60 rows
I would like to find each cell value in table (1) and if there is a match to the value in Table 2, Column 9 I want it to give me the name corresponding to that value (found in Table 2 column 2). If no match then 'NAN'.
Thank you!

 Réponse acceptée

Walter Roberson
Walter Roberson le 17 Mar 2016

0 votes

[tf, idx] = ismember(table1.Column1, table2.Column9);
results = repmat({'NaN'}, length(tf), 1); %did you say 'NaN' or NaN ?
results(tf) = table2.Column2(idx(tf));
You will need to adjust for the appropriate column names.

2 commentaires

Vespi
Vespi le 17 Mar 2016
Modifié(e) : Vespi le 17 Mar 2016
I wanted NAN in order to represent no match. Ideally I would like to get the nearest value since the RGB combination should represent an object.
I ran the code and cannot figure out the last line
results(tf) = table2.Column2(idx(tf));
I changed it to results(tf) = Object(idx(tf)); Where object is the name of the column from which I want the object values to be given for the corresponding RGB value.
Walter Roberson
Walter Roberson le 17 Mar 2016
You cannot just name a column, you have to name the table as well, like table2.Object
I am not clear as to whether your Object column is numeric or string?
You need to define "nearest", which is something that is not straight forward in colour.

Connectez-vous pour commenter.

Plus de réponses (1)

Kelly Kearney
Kelly Kearney le 17 Mar 2016

2 votes

My vlookup function does this (using the same method Walter describes, in a nice little wrapper).

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by