У меня есть матрица, как следующие (произвольные Cols/строки):Matlab: Поиск строк в матрице с фиксированным первым и последним элементом с векторизацией
1 0 0 0 0
1 2 0 0 0
1 2 3 0 0
1 2 3 4 0
1 2 3 4 5
1 2 5 0 0
1 2 5 3 0
1 2 5 3 4
1 4 0 0 0
1 4 2 0 0
1 4 2 3 0
1 4 2 5 0
1 4 2 5 3
1 4 5 0 0
1 4 5 3 0
2 0 0 0 0
2 3 0 0 0
2 3 4 0 0
2 3 4 5 0
2 5 0 0 0
2 5 3 0 0
2 5 3 4 0
3 0 0 0 0
3 4 0 0 0
3 4 2 0 0
3 4 2 5 0
3 4 5 0 0
и теперь я хочу, чтобы получить все строки, где первый элемент - это некоторое значение X, а последний элемент (то есть последний элемент! = 0) - это определенное значение Y, OR повернуто: первое - это Y, а последнее - X.
Невозможно увидеть скорый код который НЕ использует for-loop :( Спасибо!
EDIT: Для фильтрации всех строк с определенным первым элементом очень просто, вам не нужно помогать мне здесь. Итак, давайте предположим, я только хочу сделать следующее: Фильтр все строки, в которых последний элемент (т.е. последний элемент = 0 в каждой строке!) Либо X или Y.
EDIT Спасибо большое за ваши посты , Я сравнил три возможных решения с матрицей из 473408 * 10 элементов. Вот benchmarkscript: http://pastebin.com/9hEAWw9a
Результаты были:
t1 = 2.9425 Jonas
t2 = 0.0999 Brendan
t3 = 0.0951 Oli
Так Большое спасибо вам, ребята, я придерживаюсь раствором Oli и, таким образом, принять его. Спасибо, хотя для всех других решений!
хорошая идея, даже если она потерпит неудачу, если есть нули до конца. +1 в любом случае – Jonas
@Jonas: Вы имеете в виду, как в решении brendan? На самом деле, как я прокомментировал пост brendans, это не имеет значения, поскольку на самом деле есть ТОЛЬКО нули в конце. – tim
@ Oli: Спасибо Оли, это тоже очень приятно! Посмотрите на мое редактирование в первом посте, есть тестовый скрипт, и ваш скрипт побеждает (: Таким образом, я принял! – tim