Finding elements of matrix that match a condition
Ältere Kommentare anzeigen
Hello everyone,
I am working with some big data sets and I wanted to find some elements from one matrix that satisfy a condition. So, what I have. Matrix A is 251576x5. Column 1 is a timestamp, columns 2 to 4 are x,y,z coordinates and column 5 is something else that is not important to me. Matrix B is 26300x1 and is a column of timestamps starting from 0 and incrementing by 100. What I want is, for each timestamp on B I want the row with that same, or the closest possible, timestamp from A saved in another Matrix. So my output should be a matrix C, 26300x5 in dimensions.
For example, this is a piece of matrix A
25194.41 313.93 440.32 372.93 274
25727.49 327.04 420.64 387.72 277
A timestamp from matrix B is
25200
So what would be saved here in matrix C should be 25194.41 313.93 440.32 372.93 274.
I hope I made myself clear enough. Thank you all in advance
Antworten (1)
Ameer Hamza
am 14 Okt. 2020
You can use interp1() with nearest option
Bx = interp1(A(:,1), A(:,2:4), B, 'nearest');
C = [B Bx];
9 Kommentare
Ioannis Kiratzis
am 14 Okt. 2020
Ameer Hamza
am 14 Okt. 2020
Bearbeitet: Ameer Hamza
am 14 Okt. 2020
Are there duplicate timestamps in first column of matrix A? Can you share your matrices in a .mat file?
Ioannis Kiratzis
am 14 Okt. 2020
Bearbeitet: Ioannis Kiratzis
am 14 Okt. 2020
Ameer Hamza
am 14 Okt. 2020
No, it works when they have different number of rows too
A = [linspace(0, 100).' rand(100, 3)];
B = linspace(0, 100, 1000).';
Bx = interp1(A(:,1), A(:,2:4), B, 'nearest');
C = [B Bx];
Ioannis Kiratzis
am 14 Okt. 2020
Bearbeitet: Ioannis Kiratzis
am 14 Okt. 2020
Ioannis Kiratzis
am 14 Okt. 2020
Ameer Hamza
am 14 Okt. 2020
The code works correct on the matrices you shared? Can you share matrices where it fails? Also check of there are any duplicate time stamps in matrix A.
Ioannis Kiratzis
am 14 Okt. 2020
Ameer Hamza
am 14 Okt. 2020
Yes. If that happens, then the interpolation will fail. I guess that is the most likely reason for the error you are receiving.
Kategorien
Mehr zu Matrix Indexing finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!