Finding elements of matrix that match a condition

6 ビュー (過去 30 日間)
Ioannis Kiratzis
Ioannis Kiratzis 2020 年 10 月 14 日
コメント済み: Ameer Hamza 2020 年 10 月 14 日
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

回答 (1 件)

Ameer Hamza
Ameer Hamza 2020 年 10 月 14 日
You can use interp1() with nearest option
Bx = interp1(A(:,1), A(:,2:4), B, 'nearest');
C = [B Bx];
  9 件のコメント
Ioannis Kiratzis
Ioannis Kiratzis 2020 年 10 月 14 日
I can't share thethe complete matrices were it fails as they exceed the limit on the file size I can upload. I can work around the problem. I could work on a smaller portion of the dataset anyway since these are results from long experiments. So you are saying the problem is the presence of duplicate timestamps in A?
Ameer Hamza
Ameer Hamza 2020 年 10 月 14 日
Yes. If that happens, then the interpolation will fail. I guess that is the most likely reason for the error you are receiving.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by