Trying to find row number in a large matrix

1 Ansicht (letzte 30 Tage)
Will Schneider
Will Schneider am 24 Jun. 2020
Kommentiert: Will Schneider am 25 Jun. 2020
Hi all, I am writing a code that need to be able to find the particular row number in a large nx3 matrix (where n will eventually be >100000). I created a line of code to accomplish this task, but above n=20000 it does not work. Each row is unique (the matrix will never repeat a line).
row_num = max(find(ismember(pts,[X Y Z],'rows')) %[X Y Z] is defined with a loop
Does anyone know of a way to run this where it will function at a higher n value.
edit: pts is the name of the nx3 matrix
edit: ismember is causing the problem (it is acting like it has a size limit)
  3 Kommentare
per isakson
per isakson am 25 Jun. 2020
Bearbeitet: per isakson am 25 Jun. 2020
I fail to reproduce the propblem you report on my R2018b/Win10!
"(it is acting like it has a size limit)" what exactly does that mean? Full error meassage please!
Will Schneider
Will Schneider am 25 Jun. 2020
I believe that my issue was caused by user error. Sorry.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

per isakson
per isakson am 25 Jun. 2020
Bearbeitet: per isakson am 25 Jun. 2020
Your one-liner is missing a closing parentheses and Matlab proposes an improvement
rigth-clicking "find" opens a context menu and Matlab offers to do the change
Add the ")" and your code works fine on R2018b/Win10
%%
pts = randi( 1e6, 1e6,3 ); % whole numbers
%%
x = pts( 5e5, 1 );
y = pts( 5e5, 2 );
z = pts( 5e5, 3 );
row_num = find( ismember( pts, [x,y,z], 'rows' ), 1,'last' )
%%
z = pts( 5e5, 3 ) + 17;
row_num = find( ismember( pts, [x,y,z], 'rows' ), 1,'last' )
%%
z = pts( 5e5, 3 );
row_num = max(find(ismember(pts,[x,y,z],'rows')) )
outputs
row_num =
500000
row_num =
0×1 empty double column vector
row_num =
500000
>>

Weitere Antworten (0)

Kategorien

Mehr zu Cell Arrays 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!

Translated by