Во-первых, ваша проблема в том, что ввод матрицы внутри матрицы означает использование значений матрицы в качестве индексов. поскольку ваша матрица имеет только нули и единицы (в результате оператора «<»), вы получили странный результат. </p>
Чтобы ответить на ваш вопрос, вам необходимо заменить матрицу на меньшую матрицу. что-то вроде:
A = new_matrix
new_matrix генерируется из A, беря только те строки, которые вы хотите.
new_matrix = A (row_indices,:)
Где row_indices - это вектор индексов, которые вы хотите сохранить. Чтобы построить это, вы можете начать с вектора нулей и применить find (который даст индексы с единицами). Итак, мы хотим:
row_indices = find ([1,1,1, A (4: end, 3). '<600]) </p>
Первые 3 из них потому, что вы всегда хотите первые 3 строки.
Так что все вместе дает
A = A(find([1,1,1,A(4:end,3).'<600]),:)
Выполнение этого на ваших примерах значений:
>> A=[1:10; 901:910; 201:210; 301:310; 701:710; 401:410; 601:610; 501:510; 801:810; 101:110];
>> A(find([1,1,1,A(4:end,3).'<600]),:)
ans =
1 2 3 4 5 6 7 8 9 10
901 902 903 904 905 906 907 908 909 910
201 202 203 204 205 206 207 208 209 210
301 302 303 304 305 306 307 308 309 310
401 402 403 404 405 406 407 408 409 410
501 502 503 504 505 506 507 508 509 510
101 102 103 104 105 106 107 108 109 110
Кстати, изменить эти строки на строки так же просто:
A(find([0,0,0,A(4:end,3).'>600]),:) = 1