MATLAB Answers


how to find match using strfind from 2 different dataset sizes

Asked by andrew
on 19 Sep 2013
Latest activity Commented on by Andrei Bobrov
on 26 Sep 2013

I currently have 2 sets of data and I am trying to find a match based off of it's name. For example in data1 it contains apple, banana, orange, pear,etc and data 2 contains apple-1, apple-2, apple-3, banana-1, banana-2, banana-3, orange, pear-1, pear-2, etc. Ultimately, I would like to write a script to match for example apple with apple-1, apple-2, apple-3 etc and print out the corresponding data:

Col 1      column 2
apple	apple-1
apple	apple-2
apple	apple-3
banana	banana-1
banana	banana-2
banana	banana-3
orange	orange
pear 	pear-1
pear 	pear-2

I have the following code:

[nRows,~]=size (data2); % 6204x13 matrix
[nRows2,]=size (id); %258x1 matrix
for i=2:nRows 
    temp4=strfind (id,data2.SAMPLEID{i});
    ind= find(~isempty(temp4),1,'first');
for n=1:nRows2
   if ind ==1
     %  if ~isempty(ind{n});
temp3= id{i};

  1 Comment

Log in to comment.

2 Answers

Answer by Andrei Bobrov
on 20 Sep 2013
Edited by Andrei Bobrov
on 20 Sep 2013
 Accepted Answer

d1 = {'apple'; 'orange';'banana'; 'pear'}
d2 = {'apple-1'; 'pear-1'; 'apple-2';'banana-3'; 'orange'; 'apple-3'; 'banana-1';'banana-2'; 'pear-2'}
[v,iii] = sort(d2);
p = strcat(d1(1:end-1),{'|'});
p = strcat([p{:}],d1{end});
pp = regexp(d2,p,'match');
pp = cat(1,pp{:});
[~,ij] = ismember(pp,d1);
dd1 = d1(ij);
out = [dd1(iii),v]


great this works I have another question? along with that i have d3 ={'red','green','yellow',orange'} how do i get it to match it with d1 and d2?

d3 ={'red';'orange';'yellow';'green'}
color1 = d33(iii)

Log in to comment.

Answer by Jan Simon
on 19 Sep 2013

"Col 1", "column 2", "data1", "data 2", "data2", "id" - I've lost the overview.

nRows concerns the size of the array data2. But the loop for i=1:nRows affects data2.SAMPLEID{i}. Perhaps you want data2(i).SAMPLEID or data2{i}.SampleID.

You have explained ropughly, what you want to achieve and posted some code. It is hard to recognize the relation between these two information. What is the actual question? Does the code run? Do you get any errors or unwanted results?


i am getting an error message that says index exceeds matrix

Please post the line of code and a copy of the complete error message. There is no chance that we can guess the reason of the problem.

Log in to comment.

Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!