Locate and extract values from one array to another

18 views (last 30 days)
Tiago André
Tiago André on 26 May 2022
Commented: Tiago André on 2 Jun 2022 at 15:46
Hi guys, hope you doing well.
I have an array "data3" (113208576x3) with the variables "x", "y", "conc". I need to exctract from this array all the values where the "x" and "y" match an other array "SensorILM" i have (2001x4).
This is the code i tried:
load("November.mat");
load("Sensor_ILM.mat");
XILM = SensorILM.X;
YILM = SensorILM.Y;
idXmod = find(data3(:,1) == XILM)
idYmod = find(data3(:,2) == YILM)
I got the following error: "Arrays have incompatible sizes for this operation".
Do you know other way or method to do is or how to fix this error?
Thank you for your help!
Edit: I'm sorry but i didn't explain very well what i need. I want to extract the full rows of the array "data3" where the "x" and "y" match the "x" and "y" of the other array.

Accepted Answer

DGM
DGM on 26 May 2022
Use ismember() or (more likely) ismembertol(). Without knowing what the data and references look like, I'll have to leave that up to you, though the use of find() is likely not necessary. The output of ismember()/ismembertol() will be a logical array that can be used directly for indexing.
Simple example:
data = 10*rand(10,2)
data = 10×2
5.0026 9.1988 5.4673 9.2215 5.5367 6.0779 8.3047 0.9583 5.8055 7.4507 3.7809 1.6238 2.7563 3.3842 0.2377 7.9529 4.0360 3.0219 0.3630 6.5546
xref = [1 2 3 4];
yref = [5 6 7 8];
tol = 0.02; % read documentation, reduce as needed
xextracted = data(ismembertol(data(:,1),xref,tol),1)
xextracted = 4.0360
yextracted = data(ismembertol(data(:,2),yref,tol),2)
yextracted = 2×1
6.0779 7.9529
  5 Comments
Tiago André
Tiago André on 2 Jun 2022 at 15:46
I already solved the problem, your suggestion is working. Thank you for your help and patience

Sign in to comment.

More Answers (0)

Tags

Products

Community Treasure Hunt

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

Start Hunting!