Вот один из способов:
>> p = 9;
>> startrow = find(A(:, 3) == p, 1); % first row where 3rd column entry is p
>> A1 = A(startrow:end, :)
A1 =
7 8 9
2 3 4
3 4 5
1 6 8
Edit:
Имея несколько записей p в последнем столбце, вы можете изменить способ использования find . Например, если вы хотите начать с последнего p вместо первого, вы можете запустить
>> startrow = find(A(:, 3) == p, 1, 'last'); % last row where 3rd column entry is p
Если вы хотите второе из первого, вам нужно немного больше работы:
>> startrows = find(A(:, 3) == p, 2); % first two rows where 3rd column entry is p
>> startrow = startrows(end); % Just the second row where 3rd column entry is p
Кроме того, вам, вероятно, нужна проверка ошибок, если существует вероятность того, что p никогда не появится в массиве или не появится хотя бы два раза (для последнего примера).