MATLAB: Workaround for subscript indices being non-integers and non-logicals

sort by columnsubscript matrix

Hello,
I'm trying to return a submatrix with all rows that have a matching column value, but I'm receiving this error: Subscript indices must either be real positive integers or logicals.
The error is in line 22 of the attached code. I cannot round my array values to an integer, and I'm not sure if there is a more obvious or efficient way of sorting my data by a column value (column 5), reporting the median of column 2 values (distances) for all rows with matching values in column 1 (data from the same time point).
I am looking for advice on how to write the given function to do what I described above without indexing into a matrix using matrix with nonintegers. I am relatively new to MATLAB and there is likely a more efficient way to execute this, but I'm not sure what question to ask yet.
Please let me know if I can provide more information. Thank you for any help.

Best Answer

You do not show us the code for SortTime for the line
sorted_Time = SortTime(RelevantRows);
but we can predict that it is returning the sorted data, rather than the sort index. But later when you use
M2=sorted_Time;
AllTimes = M2(:,1);
then M2 will be the contents of the rows, not the indices. But then you do
TrackData = M2(AllTimes,:);
which assumes that what you are working with in AllTimes is indices, not direct values.
You need to go back and re-think which of your variables are to be indices and which of them are to be the contents of the array.
I suspect you are using the form
B = sortrows(A,column)
but you instead probably want to use the form
[B,index] = sortrows(A,column)