У меня есть huuuge матрицу, хранящую информацию о X и Y координаты множества траекторий частиц, которые в упрощенном варианте выглядит следующим образом:MATLAB: простой фильтрации матрицы - размер группы
Col 1- номер дорожки; col 2- номер кадра; col 2- координата X; цв 3- координата Y
, например:
A =
1 1 5.14832 3.36128
1 2 5.02768 3.60944
1 3 4.85856 3.81616
1 4 5.17424 4.08384
2 1 2.02928 18.47536
2 2 2.064 18.5464
3 1 8.19648 5.31056
3 2 8.04848 5.33568
3 3 7.82016 5.29088
3 4 7.80464 5.31632
3 5 7.68256 5.4624
3 6 7.62592 5.572
Теперь я хочу, чтобы отфильтровать траектории короче позволяет говорить 4 и сохранить оставшиеся вещи, как (примечание перенумерации траекторий):
B =
1 1 5.14832 3.36128
1 2 5.02768 3.60944
1 3 4.85856 3.81616
1 4 5.17424 4.08384
2 1 8.19648 5.31056
2 2 8.04848 5.33568
2 3 7.82016 5.29088
2 4 7.80464 5.31632
2 5 7.68256 5.4624
2 6 7.62592 5.572
Как это сделать эффективно? Я могу думать о некоторых идеях, использующих for loop и vertcat, но это самое медленное решение из когда-либо:/
Спасибо!
Что вы имеете в виду траектории короче, чем 2? –
О, извините, глупо мне :) Конечно, короче f.ex. 4 = траектория от менее 4 кадров – Art
эта матрица является очень неэффективным способом хранения этой информации. даже если вы просто разделили бы его и сохранили бы «малые» матрицы в ячейке, такая «фильтрация» результатов была бы тривиальной. – bdecaf