Compare two matrix in matlab
    23 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
I have two matrix data1 and data2. I want to select all rows in data1 that close or equals to data2. I know that loop each element can work but it will take a long time. Is there any easy method I can use?
data1 is attached and data 2 is the following function.
x1 = (0:1:414194)';
data2 = 6*x1;
Thank  a lot,
MCC
1 Kommentar
Akzeptierte Antwort
  SALAH ALRABEEI
      
 am 15 Jun. 2021
        Here you can extract those element val that are in both data located at index1 and index2
[val,index1,index2] = intersect(data1,data2)
4 Kommentare
  SALAH ALRABEEI
      
 am 15 Jun. 2021
				Another approach, to find values in a that are close or equal to data in b. Eror 0.001
    a=1:10;
b=[3.001,4.99,5,6,10];
[x,y] = meshgrid(a,b);
A = [x(:),y(:)];
index = find(abs(A(:,1)-A(:,2))<1e-3);
x(index) % values in a that are close or equal to data in b
Weitere Antworten (1)
  Sulaymon Eshkabilov
      
 am 15 Jun. 2021
        Easy and fast efficient solution is Logical Indexing, e.g.:
IND = Data1==Data2
D1 = Data1(IND);
D2 = Data2(IND);
You can also employ round() fcn to reduce the small differences in values of the two data sets. 
Or even better to compute the min. differences and get those indices, e.g.:
[minVal,ClosestIND] = min(abs(Data1-Data2))
D1 = Data1(ClosestIND);
D2 = Data2(ClosestIND);
3 Kommentare
Siehe auch
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!


